我試圖通過調用包含頁面控制器上的函數來設置指令屬性的值,但它不能按預期方式工作。在下面的代碼中,「make」對象沒有「modelList」屬性,所以我必須對服務器單獨調用以獲取每個make。通過調用函數設置角度指令屬性
<div ng-repeat="make in makeList">
<model-list-directive model-list="getModelList(make)" />
</div>
app.controller("myController",function($scope) {
$scope.getModelList = function(make) {
return null;
//return myService.getModelList(make);
};
})
app.directive("modelListDirective",function() {
restrict:'E',
scope: {
modelList: '='
},
template: '<ul><li ng-repeat="model in modelList">{{model.modelName}}</li></ul>',
controller: ['$scope', function ($scope) {
}]
如果getModelList()函數被設置爲返回null(未在代碼註釋),沒有給出錯誤,但是函數被調用多次(3和5之間隨機變化通常)。
真正的問題出現在我調用myService.getModelList(make)時(在代碼中註釋掉)。這導致對服務的調用無休止的循環,從而導致瀏覽器崩潰。
我猜這是因爲雙向綁定,但我不確定。
有沒有更好的方式來獲取動態數據的指令?
邁克,感謝您的輸入,特別是討論無限循環的鏈接。我會繼續編寫代碼將函數傳遞給指令,而不是所需的函數結果。對於那些發生在這個解決方案中的人,我的具體項目涉及一個以多種方式使用的指令,有時顯示與「make」相關聯的「模型」列表,有時顯示隨機的「模型」列表。處理第二個實例很容易,因爲該指令僅在頁面上使用一次。但是,第一個實例放置在中繼器中,需要動態生成模型列表。 – 2014-12-10 03:23:32