javascript - AngularJS操作ng-show指令

來源:互聯網
上載者:User
需求:頁面有一個使用 ng-repeat指令產生的列表,當點擊一個item時,就隱藏之。

問題:請問如何在ng-click的回調中操作當前item的ng-show的值,而不影響其他item?

代碼:


  

回複內容:

需求:頁面有一個使用ng-repeat指令產生的列表,當點擊一個item時,就隱藏之。

問題:請問如何在ng-click的回調中操作當前item的ng-show的值,而不影響其他item?

代碼:


  


  

設定一個hidden屬性,結合列表的$index即可。

  
  
  • {{item.title}}
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;        }    })

之所以要把hidden設定為對象而非原始值,是因為ng-repeat有獨立的範圍,直接在ng-repeat的範圍上修改原始值父控制器上的值是不會改變的;需要藉助參考型別,如對象或數組,才能保證修改儲存到父級控制器。

http://jsbin.com/modute/edit?html,js,output

@onelove 這哥們兒的回答應該是這個意思:


  

這樣雖然能實現需求,但是問題很大,就是把控制視圖的show和資料耦合在一起了,這樣不好吧?還有什麼辦法嗎?

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.