如何选择刚刚在select指令中动态添加的新元素

时间:2014-09-06 16:56:10

标签: angularjs select data-binding angularjs-directive

我正在构建一个带有选择列表的指令,以便动态添加元素。

以下不起作用:我在我的指令的ng-model-options绑定中使用的数组模型中添加了一个元素。 该元素很好地添加到列表但未被选中。相反,我一直得到空行。我无法找到将ng-model设置为新添加元素的方法。

我已经尝试了一个范围。$ watch在指令中的项目列表中,但奇怪的是当项目列表增加一个新元素时不会触发任何内容。而且我不明白为什么:如果列表正在更新,那么scope.items应该触发范围。$ watch ...

scope.$watch('items', function(){
      scope.ngModel = scope.items[0];
});  

我已经做了一个插图来说明这一点:plunker

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这将有效(documentation

scope.$watch('items', function(){
      scope.ngModel = scope.items[0];
}, true);  // Add third parameter true, this will make sure you check if the list 
           // has changed and not only if a new list was added

// Without the third parameter: 
var list = [];
list.push('test'); // won't call watch

var list = ['test'];
list = ['new array']; //will call watch