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
和数据耦合在一起了,这样不好吧?还有什么办法么?

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











最近、Webページにローカルにインストールされたフォントファイルを使用して、インターネットから無料のフォントをダウンロードし、システムに正常にインストールしました。今...

要素の数が固定されていない場合、CSSを介して指定されたクラス名の最初の子要素を選択する方法。 HTML構造を処理するとき、あなたはしばしば異なる要素に遭遇します...

PHPの...(SPLAT)演算子は、機能パラメーターと配列を開梱するために使用され、コードのシンプルさと効率を向上させます。 1)関数パラメーター解放:アレイ要素をパラメーターとして関数に渡します。 2)配列の開梱:アレイを別の配列または関数パラメーターに解除します。

H5ページは、コードの脆弱性、ブラウザー互換性、パフォーマンスの最適化、セキュリティの更新、ユーザーエクスペリエンスの改善などの要因のため、継続的に維持する必要があります。効果的なメンテナンス方法には、完全なテストシステムの確立、バージョン制御ツールの使用、定期的にページのパフォーマンスの監視、ユーザーフィードバックの収集、メンテナンス計画の策定が含まれます。

PHP8では、一致式は、式の値に基づいて異なる結果を返す新しい制御構造です。 1)Switchステートメントに似ていますが、実行ステートメントブロックの代わりに値を返します。 2)一致式の式は厳密に比較され、セキュリティが向上します。 3)スイッチステートメントの脱落の可能性を回避し、コードのシンプルさと読みやすさを向上させます。

VUE 2.0を使用してモバイルアプリケーションを開発する際に、さまざまなデバイスで省略されたモバイル端末のマルチローオーバーフローの互換性の問題は、テキストをオーバーフローする必要性に遭遇することがよくあります...

はい、H5ページの生産は、HTML、CSS、JavaScriptなどのコアテクノロジーを含むフロントエンド開発のための重要な実装方法です。開発者は、&lt; canvas&gt;の使用など、これらのテクノロジーを巧みに組み合わせることにより、動的で強力なH5ページを構築します。グラフィックを描画するタグまたはJavaScriptを使用して相互作用の動作を制御します。

H5ページの生産の利点には、軽量エクスペリエンス、積み込み速度、ユーザー保持の改善が含まれます。クロスプラットフォームの互換性、さまざまなプラットフォームに適応する必要はなく、開発効率を向上させます。柔軟性と動的な更新、監査が不要で、コンテンツの変更と更新が容易になります。ネイティブアプリよりも費用対効果の高い開発コスト。
