自定义指令 - $ watch无效

时间:2015-11-12 16:42:12

标签: angularjs angularjs-directive

请参阅此插件:http://plnkr.co/edit/pB8Pa5rz3XnIhsqP8rQL?p=preview

var str = $scope.myOptions.split(' ');
  var itemStr = str[0];
  var collectionName = str[2];

  $scope.$watch(collectionName,function(collection){
    console.log(collection);
    for(var i=0;i<collection.length;i++){
      $scope.item.push(collection[i]);
    }
  });

我看到collectionName已正确填充并且调用了watch函数。但是为什么它不解析这个集合呢?它是未定义的而不是集合数组。

2 个答案:

答案 0 :(得分:0)

您的指令具有隔离范围,因此它无法访问控制器上的states变量。你必须将它传递给指令才能看到它。

检查此插件:

http://plnkr.co/edit/smLmR1l09sFoqbx3OSu0?p=preview

答案 1 :(得分:0)

解决方案是使用链接功能。我试图使用以下方法读取数组:

scope: {myOptions: '@'}

@只获取字符串,指令无法将其解析为模型。

使用链接功能,您可以观看模型并对其执行操作