gpt4 book ai didi

javascript - 如何处理 View 和 watch 上的 promise - AngularJs 1.4

转载 作者:行者123 更新时间:2023-11-28 07:04:19 26 4
gpt4 key购买 nike

我采用了将所有属性和方法实现为返回 promise 的方法,我认为这是“Angular ”方式。

我还从所有 Controller 和指令中删除 $scope 并使用 controllerAsbindToController 方法。

<强>1。 watch 。
在我通过执行类似的操作来观察变量之前

var $removeWatch = $scope.$watch(function() {
return _myService.myProperty();
}, function(newValue, oldValue) {

});

我的服务中的属性将是非常基本的,就像这样

this.myProperty = function() {
return "myValue";
}

现在我已经更改了我的属性以使用 promise ,所以现在看起来像这样

this.myProperty = function() {
var $defer = $q.defer();
$defer.resolve("myValue");
return $defer.promise;
}

但是现在我的 watch 不工作了?我怎样才能让我的 watch 正常工作?由于我已经删除了所有地方的作用域,我如何监视变量/属性/方法?

<强>2。查看特性在我的 html 页面中,我会有类似的内容

<span ng-bind="::getName()"></span>

我的 Controller 上会有一个与此类似的方法。

$scope.getName = function() {
return _myService.myProperty();
};

现在我已经删除了范围并更改了我的属性以返回 promise (与上面的服务示例中的属性相同),这不再有效。

如何从使用 Promise 的属性/方法将数据返回到我的 View ?

最佳答案

我可能在这里遗漏了一些东西,但这是我从您遇到的问题中了解到的:

如果您正在处理这样的 promise :

var ctrl = this; // controller

somePromise().then(function(data) {
ctrl.someProperty = data;
})

然后你应该能够观察 ctrl.property 的变化:

$scope.$watch(ctrl.someProperty, function (newVal, oldVal) {
console.log(newVal, oldVal);
})

您的 View 应该能够毫无问题地显示 ctrl.someProperty 数据。

当然,之前建议的 plunkers 对于更详细的解决方案非常有帮助。

希望这有帮助。

关于javascript - 如何处理 View 和 watch 上的 promise - AngularJs 1.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31827230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com