我正在使用一个承诺。但是当我的promise解析时,对视图的绑定不会绑定到新值。
我做了一个小jsfiddle:http://jsfiddle.net/58q8khap/8/
以下是观点:
<div ng-controller="MyCtrl">
Hello, {{name}}!
</div>
和代码:
var myApp = angular.module('myApp',[]);
function MyCtrl($scope,ownservice) {
$scope.name = "Noname";
ownservice.getname().then(function(result){
$scope.name = 'Superhero';
});
}
myApp.service('ownservice', function ($q) {
this.getname = function () {
var deferred = $q.defer();
setTimeout(function() {
deferred.resolve('Superhero');
} , 1000);
return deferred.promise;
}
});
答案 0 :(得分:2)
只需将角度版本setTimeout
替换为$timeout
即可。这样,角度将强制消化周期并刷新范围
工作小提琴:http://jsfiddle.net/cunuj46w/
请注意,您应该使用角度驱动的全局变量版本,例如$ timeout或$ window也用于测试/模拟目的
答案 1 :(得分:1)
这一行之后
$scope.name = 'Superhero';
添加
$scope.$apply();