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

Angularjs 如何选择刚刚在select指令中动态添加的新元素,angularjs,select,data-binding,angularjs-directive,Angularjs,Select,Data Binding,Angularjs Directive,我正在构建一个带有选择列表的指令,以便动态添加元素 以下操作不起作用:我正在将一个元素添加到我的指令的ng model options绑定中使用的数组模型中。 元素被很好地添加到列表中,但没有被选中。相反,我一直得到空行。我找不到将ng模型设置为新添加元素的方法 我在指令内的项目列表上尝试了作用域.$watch,但奇怪的是,当项目列表增加一个新元素时,没有触发任何动作。我不明白为什么:如果列表正在更新,那么scope.items也应该更新,它应该触发scope.$watch scope.$wat

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

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

我在指令内的项目列表上尝试了作用域.$watch,但奇怪的是,当项目列表增加一个新元素时,没有触发任何动作。我不明白为什么:如果列表正在更新,那么scope.items也应该更新,它应该触发scope.$watch

scope.$watch('items', function(){
      scope.ngModel = scope.items[0];
});  
我做了一个例子来说明这一点:

谢谢你在这方面的帮助

这将起作用()


是否在角度范围内添加项目?如果在angukar之外使用代码,则需要
$apply()
Awesome。不确定您在文档中的什么地方找到的。。但是,竖起大拇指的把戏!这就是:$watch(watchExpression,listener,[objectEquality]);当objectEquality==true时,watchExpression的不等式根据angular.equals函数确定。
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