簡體   English   中英

在AngularJS中的已解決諾言上使用ng-model(奇怪的行為)

[英]Using ng-model on a resolved promise in AngularJS (strange behavior)

這是我簡單的控制器和指令:

var myApp = angular.module('myApp',[]);

function MyCtrl($scope, $q) {
    var myObject = {
        name: "Dingus",
        favoriteFood: "Chicken",
    };

    var itemDeferred = $q.defer();
    $scope.item = itemDeferred.promise;

    var resolveIt = function() {
        itemDeferred.resolve(myObject);
    };
    resolveIt();
}

myApp.directive('promised', function() {
    return {
        restrict: 'E',
        scope: { boundModel: '=' },
        template: '<input type="text" ng-model="boundModel">',
    };
});

范圍項目是根據承諾解決的。 當我在HTML中使用ng-model時,輸入為什么不更新項目,為什么指令甚至不讓我輸入?

有關工作示例,請參見此提琴: http : //jsfiddle.net/winduptoy/XmBxK/

我認為這是在發生什么事,就是每次您在輸入框中鍵入Angular的摘要循環時,都會檢查promise的結果並將myObject重新分配給$ scope.item。 這是避免這種情況的一種方法:

//$scope.item = itemDeferred.promise;
var promise = itemDeferred.promise;

promise.then(function(obj) {
   alert('Success: ' + obj);
   $scope.item = obj;
}, function(reason) {
   alert('Failed: ' + reason);
});

小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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