簡體   English   中英

向項目添加項目時,ng-list輸入未更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM