[英]ng-list input not updating when adding items to array
我遇到了一個奇怪的問題,即在向模型添加項目時,使用ng-list的輸入不會更新。 我創造了一個小提琴來更好地說明這個問題: http : //jsfiddle.net/rtZY3/
// Doesn't update ng-list input
$scope.tags.push(tag);
// Does update ng-list input
var tags = angular.copy($scope.tags);
tags.push(tag);
$scope.tags = tags;
這似乎不是預期的行為,特別是因為$scope.tags
正在正確更新,如上面jsFiddle中的<pre>
標記所示。
好的,所以這很有趣。 我挖掘了ngList指令的未經授權的AngularJS源代碼。
似乎第一個示例不會觸發formatter函數,該函數將數組值拆分為輸入字段中顯示的逗號分隔字符串。
進一步調查顯示錯誤在於ngModel指令的控制器 。 僅當值嚴格不等於前一個值時才調用格式化程序,但由於它與第一個示例中的數組實例相同,因此該語句的計算結果為false,因此不會更新文本字段。 查看源代碼 。
$scope.$watch(function ngModelWatch() {
var value = ngModelGet($scope);
// $modelValue and value is the same array instance in your first example
if (ctrl.$modelValue !== value) {
// ...
}
});
在第二個示例中,每次都創建一個新的數組實例,因此運行格式化程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.