我是Angular的新手,如果你點擊一個選項卡,ng-repeat會顯示一些屬性,如果你點擊不同的標籤,ng-repeat witll顯示一切與不同的屬性。但是我不能讓tab控制器和ng-show一起工作。這裏是我的代碼:Angular-JS。如何讓控制器在ng-repeat中重複ng-show
<ul class = "nav nav-pills" ng-controller = "TabController as tabCtrl">
<li ng-class="{'active':tabCtrl.isTab(1)}">
<a ng-click="tabCtrl.setTab(1)" href = "#"> All </a>
</li>
<li ng-class="{'active':tabCtrl.isTab(2)}">
<a ng-click="tabCtrl.setTab(2)" href = "#"> Online </a>
</li>
<li ng-class="{'active':tabCtrl.isTab(3)}">
<a ng-click="tabCtrl.setTab(3)" href="#"> Offline </a>
</li>
</ul>
...
<div class = "user" ng-repeat="streamer in twitch.users" ng-show="tabCtrl.isTab(1)">
//... repeated stuff here
</div>
這裏是TabController JS代碼:
app.controller('TabController', function(){
this.tab = 1;
this.setTab = function(t){
this.tab = t;
}
this.isTab = function(t){
return (this.tab == t);
}
})
但是NG-show顯示毫無作爲ISTAB()始終是假的。任何人都可以向我解釋爲什麼?
javascript控制檯中是否有任何輸出? –
這是一個常見的問題,'this'在函數內部改變了上下文(它不是在函數內部引用控制器*)。人們使用[模式](http://stackoverflow.com/q/962033/398606),在那裏他們保持對具有「自我」的控制器的引用。然後你可以在函數內使用'self'來訪問控制器。 (試圖找到一個角度具體的例子) –