从循环(在指令中)生成观察者并不起作用

时间:2016-05-12 15:28:04

标签: angularjs active-directory

基本上我有一个问题,我有一个指令,它有一个可观的属性,它看(基于某种模式),我必须根据这些属性生成观察者(以及有多少)是)。这些属性还与ng模型相关联(因此当属性值发生变化时,观察者会被解雇)。问题是,我知道如何动态生成观察者的唯一方法是通过某种类型的循环,似乎观察者如果通过循环完成它们就不会工作。为了确认它在我声明每一个时它是否有效,我做了这个测试指令:

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();});
    }
}

但如果我使用此代码,则不会。

<input custom-directive
attribute1 = "someNgModel"
attribute2 = "otherNgModel">

这就是html的样子

{{1}}

非常感谢任何帮助

谢谢!

1 个答案:

答案 0 :(得分:1)

你可以循环attrs并为每个人设置一个observable:

angular.forEach(attr.$attr, function (key, value) {
   attr.$observe(value, function (newValue) {
      if (newValue) {
        console.log('New value for attr.' + value + ':', newValue);
       }
     });
  });

如果您打算观看一组属性。