複合階層データを表示する再利用可能なディレクティブの作成に取り組んでいます。ng-repeatメソッドがng-clickメソッドから呼び出されたときにリフレッシュされない
「サーバー」/「ソフトウェア」/「マザーボード」(ng-repeatにバインドされたアイテム配列)のようなカテゴリが表示されます。ユーザーが「サーバー」をクリックすると、「Ser1」/「Ser2」/「Ser3」のような使用可能なサーバーが表示されます。
html :
<div ng-app="myApp" ng-controller="myCtrl" ng-init="init()">
<ul>
<li ng-repeat="item in items">
<div my-dir paramitem="item"></div>
</li>
</ul>
</div>
最初にアイテムがロードされていますが、アイテムをクリックしてもng-repeatがリフレッシュされません。私は、下のコントローラ、メソッドで "サブItemClick"をクリックしてチェックして、それが解雇されている。ただし、アイテムのコレクションはリフレッシュされません。
http://plnkr.co/edit/rZk9cbEJU90oupVgcSQt
Controller:
var myApp = angular.module('myApp', []);
myApp.controller('myCtrl', ['$scope', function($scope) {
$scope.init = function() {
$scope.items = [{iname: 'server',subItems: ['ser1', 'ser2','ser3']}
];
};
$scope.subItemClick = function(sb) {
if (sb.subItems.length > 0) {
var zdupitems = [];
for (var i = 0; i < sb.subItems.length; i++) {
zdupitems.push({
iname: sb.subItems[i],
subItems: []
});
}
$scope.items = zdupitems;
}
};
}])
.directive('myDir', function() {
return {
controller: 'myCtrl',
template: "<div><a href=# ng-click='subItemClick(paramitem)'>{{paramitem.iname}}</a></div>",
scope: {
paramitem: '='
}
}
});
私はSER1/SER2のような項目は、「サーバー」をクリックしますが、それは起きていない上ngのリピートに拘束されることに期待しています。
助けが必要ですか?
あなたのディレクティブは隔離されたスコープを使用します。あなたがそれを渡すまで、そのスコープに 'subItemClick()'はありません – charlietfl