一尘不染

AngularJS承诺

angularjs

AngularJS文档

$ qpromise由模板引擎以角度识别,这意味着在模板中,您可以将附加到作用域的promise视为它们的结果值。

所以有人可以解释一下这种提琴无法正常工作的原因吗?不可能更改文本字段的值。但是分配保证$http服务返回作用域字段的工作就像一个超级按钮。

控制器:

function MyController($scope, $q, $timeout) {
    this.getItem = function () {
        var deferred = $q.defer();
        deferred.resolve({
            title: 'Some title'
        });
        return deferred.promise;
    };

    $scope.item = this.getItem();
}

HTML:

<input type="text" ng-model="item.title">

阅读 228

收藏
2020-07-04

共1个答案

一尘不染

您需要在promise对象上使用then()函数:

this.getItem().then(function(result) {
   $scope.item = result;
});

就您而言,我认为您不需要承诺。Angular的$watch系统将处理所有事情。只需在函数中返回一个对象,而不是原始类型:

this.getItem = function () {
    var item = {};

    // do some async stuff
    $http.get(...).success(function(result) {
       item.title = result;
    });
    return item;
};

$scope.item = this.getItem();
2020-07-04