javascript - AngularJS操作ng-show指令
需求:页面有一个使用ng-repeat
指令生成的列表,当点击一个item时,就隐藏之。
问题:请问如何在ng-click
的回调中操作当前item的ng-show
的值,而不影响其他item?
代码:
<ul ng-controller="listCtrl"> <li ng-repeat="item in items" ng-click="delete()" ng-show="show"> <span ng-bind="item.title"></span> <span ng-bind="item.price"></span> </li> </ul> <script> var myApp = angular.module('myApp',[]); myApp.controller('listCtrl',function($scope){ var items = [{title:"title1",price:120},{title:"title2",price:23},{title:"title3",price:32234}] $scope.items = items; // $scope.show = "true"; $scope.delete = function(item){ // $scope.show = "false" } }) </script>
回复内容:
需求:页面有一个使用ng-repeat
指令生成的列表,当点击一个item时,就隐藏之。
问题:请问如何在ng-click
的回调中操作当前item的ng-show
的值,而不影响其他item?
代码:
<ul ng-controller="listCtrl"> <li ng-repeat="item in items" ng-click="delete()" ng-show="show"> <span ng-bind="item.title"></span> <span ng-bind="item.price"></span> </li> </ul> <script> var myApp = angular.module('myApp',[]); myApp.controller('listCtrl',function($scope){ var items = [{title:"title1",price:120},{title:"title2",price:23},{title:"title3",price:32234}] $scope.items = items; // $scope.show = "true"; $scope.delete = function(item){ // $scope.show = "false" } }) </script>
<code><ul ng-controller="listCtrl"> <li ng-repeat="item in items" ng-click="delete()" ng-show="item.show"> <span ng-bind="item.title"></span> <span ng-bind="item.price"></span> </li> </ul> <script> var myApp = angular.module('myApp',[]); myApp.controller('listCtrl',function($scope){ var items = [{title:"title1",price:120},{title:"title2",price:23},{title:"title3",price:32234}] $scope.items = items; // $scope.show = "true"; $scope.delete = function(item){ $scope.item.show = "false" } }) </script> </code>
设置一个hidden属性,结合列表的$index
即可。
<code> <ul ng-controller="listCtrl"> <li ng-repeat="item in items" ng-click="change($index)" ng-hide="hidden.value == $index"> <span>{{item.title}}</span> <span ng-bind="item.price"></span> </li> </ul></code>
<code>angular.module('myApp',[]) .controller('listCtrl',function($scope){ var items = [{title:"title1",price:120},{title:"title2",price:23},{title:"title3",price:32234}] $scope.items = items; $scope.hidden = {value: null} // $scope.show = "true"; $scope.change = function(i) { $scope.hidden.value = i; } })</code>
之所以要把hidden设置为对象而非原始值,是因为ng-repeat
有独立的作用域,直接在ng-repeat
的作用域上修改原始值父控制器上的值是不会改变的;需要借助引用类型,如对象或数组,才能保证修改保存到父级控制器。
http://jsbin.com/modute/edit?html,js,output
@onelove 这哥们儿的回答应该是这个意思:
<ul ng-controller="listCtrl"> <li ng-repeat="item in items" ng-click="delete(item)" ng-show="item.show"> <span ng-bind="item.title"></span> <span ng-bind="item.price"></span> </li> </ul> <script type="text/javascript"> var myApp = angular.module('myApp',[]); myApp.controller('listCtrl',function($scope){ var items = [{title:"title1",price:120,show:true},{title:"title2",price:23,show:true},{title:"title3",price:32234,show:true}] $scope.items = items; $scope.delete = function(item){ item.show = false; } }) </script>
这样虽然能实现需求,但是问题很大,就是把控制视图的show
和数据耦合在一起了,这样不好吧?还有什么办法么?

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Erstellen Sie eine Fortschrittsleiste mit HTML5 oder CSS: Erstellen Sie einen Fortschrittsbalkenbehälter. Stellen Sie die Fortschrittsbalkenbreite ein. Erstellen Sie interne Elemente der Fortschrittsleiste. Legt die interne Elementbreite der Fortschrittsleiste fest. Verwenden Sie JavaScript, CSS oder Fortschrittsbalkenbibliothek, um den Fortschritt anzuzeigen.

Setzen Sie in HTML die H5-Tabellengrenzen durch CSS: Führen Sie ein CSS-Stilblatt ein, stylen Sie den Rand mit den Randattributen (einschließlich der Unterpropertien von Grenzbreiten, Grenzstilen und Grenzfarben) und wenden Sie den Stil auf die Tischelemente an. Darüber hinaus können bestimmte Grenzstile festgelegt werden, z.

Zu den Schritten zum Erstellen eines H5 -Klicksymbols gehören: Vorbereitung eines quadratischen Quellenbildes in der Bildbearbeitungssoftware. Fügen Sie die Interaktivität in den H5 -Editor hinzu und legen Sie das Klickereignis fest. Erstellen Sie einen Hotspot, der das gesamte Symbol abdeckt. Stellen Sie die Aktion von Klickereignissen fest, z. B. zum Springen zur Seite oder zum Auslösen von Animationen. Exportieren Sie H5 als HTML-, CSS- und JavaScript -Dateien. Stellen Sie die exportierten Dateien auf einer Website oder einer anderen Plattform ein.

Ausführen des H5 -Projekts erfordert die folgenden Schritte: Installation der erforderlichen Tools wie Webserver, Node.js, Entwicklungstools usw. Erstellen Sie eine Entwicklungsumgebung, erstellen Sie Projektordner, initialisieren Sie Projekte und schreiben Sie Code. Starten Sie den Entwicklungsserver und führen Sie den Befehl mit der Befehlszeile aus. Vorschau des Projekts in Ihrem Browser und geben Sie die Entwicklungsserver -URL ein. Veröffentlichen Sie Projekte, optimieren Sie Code, stellen Sie Projekte bereit und richten Sie die Webserverkonfiguration ein.

Die Erstellungsschritte für die Erstellung von Popup-Fenstern in H5: 1. Bestimmen Sie die Auslösermethode (klicken, Zeit, Beenden, Scrollen); 2. Entwurfsinhalt (Titel, Text, Aktionsschaltfläche); 3.. Set Style (Größe, Farbe, Schriftart, Hintergrund); 4. Implementieren Sie Code (HTML, CSS, JavaScript); 5. Test und Bereitstellung.

Zu den Lösungen für H5 -Kompatibilitätsprobleme gehören: Verwenden von Responsive Design, mit dem Webseiten Layouts entsprechend der Bildschirmgröße anpassen können. Verwenden Sie Cross-Browser-Test-Tools, um die Kompatibilität vor der Freigabe zu testen. Verwenden Sie Polyfill, um neue APIs für ältere Browser zu unterstützen. Befolgen Sie die Webstandards und verwenden Sie effektive Code und Best Practices. Verwenden Sie CSS -Präprozessoren, um den CSS -Code zu vereinfachen und die Lesbarkeit zu verbessern. Optimieren Sie die Bilder, reduzieren Sie die Größe der Webseiten und beschleunigen Sie das Laden. Aktivieren Sie HTTPS, um die Sicherheit der Website zu gewährleisten.

Das Dropdown-Menü "H5 erstellen" enthält die folgenden Schritte: Erstellen Sie eine Dropdown-Liste, wenden Sie einen CSS-Stil an, fügen Sie Umschalteffekte hinzu und verwandeln Sie Benutzerauswahl. Die spezifischen Schritte sind wie folgt: Erstellen Sie HTML, um eine Dropdown-Liste zu erstellen. Verwenden Sie CSS, um das Erscheinungsbild des Dropdown-Menüs anzupassen. Verwenden Sie JavaScript oder CSS, um den Switching -Effekt zu erreichen. Hören Sie sich Änderungsereignisse an, um die Benutzerauswahl zu bewältigen.

Es gibt zwei Möglichkeiten, eine H5 -Fortschrittsleiste zu erstellen: Verwenden von HTML -Fortschrittsbalkenelementen und Verwendung von JavaScript, um eine Fortschrittsleiste zu erstellen. Bei der HTML -Fortschritts -Elemente -Methode erstellen Sie ein Fortschrittsbalkenelement und das Festlegen des maximalen und aktuellen Werts, während die JavaScript -Methode das Erstellen eines Fortschrittsbalken -Containers und eine Funktion umfasst, die die Fortschrittsleiste aktualisiert.
