2014-10-02 70 views
0

我使用承诺。但是,当我的诺言解决了绑定到视图不绑定到新的价值。Angularjs:承诺不会更新绑定

我做了一个小的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; 
     } 
}); 

回答

2

由角版本$timeout只需更换使用setTimeout。这样的角度将迫使消化周期,并刷新你的范围

工作小提琴:http://jsfiddle.net/cunuj46w/

请注意,你应该使用像$超时或$窗口也可用于测试全局的角度动力版本/嘲讽目的

+0

我的问题是另一个。这是一个简单的例子。但由于你的回答,我发现了这一点。谢谢 – 2014-10-02 08:35:08

+0

更新您的问题/小提琴,如果需要;) – 2014-10-02 08:40:20

+0

没关系。我认为这是一个错字或类似的东西 – 2014-10-02 08:41:04

1

此行之后

$scope.name = 'Superhero'; 

增加

$scope.$apply();