AngularJS:我应该如何更新监视侦听器内已解析的promise的属性?
发布时间:2020-12-17 08:51:37 所属栏目:安全 来源:网络整理
导读:考虑 this Plunkr. 在我的监听器内部,我想更新已解决的承诺的属性. 修改$$v属性的值是否正确? 如果没有,那我该怎么办? 这是HTML: !DOCTYPE htmlhtml id="ng-app" ng-app="myAngularApp" head script data-require="angular.js@*" data-semver="1.2.0-rc2"
考虑
this Plunkr.
在我的监听器内部,我想更新已解决的承诺的属性. >修改$$v属性的值是否正确? 这是HTML: <!DOCTYPE html> <html id="ng-app" ng-app="myAngularApp"> <head> <script data-require="angular.js@*" data-semver="1.2.0-rc2" src="http://code.angularjs.org/1.2.0-rc.2/angular.js"></script> <script src="script.js"></script> </head> <body ng-controller="MyController"> <input ng-model="myDto.Weight" />{{myDto.Status}} </body> </html> 这是JavaScript: var myDto = {Weight: 200,Status: 'Acceptable'}; var myAngularApp = angular.module('myAngularApp',[]); myAngularApp.factory('myService',function($q){ return { getMyDto: function(){ var deferred = $q.defer(); deferred.resolve(myDto); return deferred.promise; } }; }); myAngularApp.controller('MyController',function MyController($scope,myService){ $scope.myDto = myService.getMyDto(); $scope.$watch('myDto.Weight',function(newVal,oldVal){ if (newVal < 150) { $scope.myDto.$$v.Status = 'Too Light!'; // Is this the recommended way of doing it? } else if (500 < newVal) { $scope.myDto.$$v.Status = 'Too Heavy!'; } else if (Number(newVal)) { $scope.myDto.$$v.Status = 'Acceptable'; } else { $scope.myDto.$$v.Status = 'Not a number!'; } }); });
我不会直接修改$$v,它是一个实现细节.相反,使用然后获得承诺的结果,然后随意使用它.这需要对代码进行最少的更改.
Demo link myAngularApp.controller('MyController',myService){ ($scope.myDto = myService.getMyDto()).then(function(myDto) { $scope.$watch('myDto.Weight',oldVal){ if (newVal < 150) { myDto.Status = 'Too Light!'; // Is this the recommended way of doing it? } else if (500 < newVal) { myDto.Status = 'Too Heavy!'; } else if (Number(newVal)) { myDto.Status = 'Acceptable'; } else { myDto.Status = 'Not a number!'; } }); }); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |