0
基本上我有一個問題,我有一個指令,它具有可變數目的屬性(基於某種模式),而且我有根據這些屬性(以及有多少)來生成觀察者。這些屬性還與ng-models綁定(因此當屬性值改變時,觀察者被解僱)。問題是,我知道如何動態生成觀察者的唯一方法是通過某種類型的循環,而且如果我通過一個循環執行它們,看起來似乎不會工作。爲了證實它的工作原理,當我宣佈每一個,我做了這個測試指令:從一個循環(在指令中)生成觀察者不起作用
.directive('customDirective',
['$filter', function($filter) {
var link = function(scope, element, attrs, ngModelCtrl) {
var keys = ['attribute1', 'attribute2']
// I try to generate the watchers here
}
}])
所以基本上,如果我用這個代碼,它的工作原理:
scope.$watch(function() {
return scope.$eval(attrs[keys[0]]);},
function() {someFunction();});
scope.$watch(function() {
return scope.$eval(attrs[keys[1]]);},
function() {someFunction();});
但是,如果我用這個代碼,它沒有。
for (var n = 0; n < keys.length; n++) {
scope.$watch(function() {
return scope.$eval(attrs[keys[n]]);},
function() {someFunction();});
}
}
這是HTML是什麼樣子
<input custom-directive
attribute1 = "someNgModel"
attribute2 = "otherNgModel">
任何幫助,將不勝感激
謝謝!
你的意圖是什麼,因爲,在我看來,你正在關注所有的範圍,也許你想'觀察'屬性值!? – sbaaaang
嗨,感謝您的回覆!當任何一個屬性發生變化(它們與控制器中的ng-models鏈接,其值將在用戶輸入中改變時)時,意圖是在指令中觸發一個事件。 正如我前面提到的,當我知道我需要多少屬性時,這通常不是問題,但是此指令應該是可重用的,並且能夠處理任意數量的屬性(當然,使用正確的格式),因此看來,我需要動態生成觀察者。 – LargeCrimsonFish
那麼你可以很容易地做一個循環,並綁定一個$觀察每個屬性的'attrs'我下注... :) – sbaaaang