2014-01-17 40 views
1

以前,我的代碼在AngularJs 1.1.5版本中工作正常,但在升級到1.2.x後,以下代碼不起作用。 1.2.x中有什麼改變嗎?爲什麼自從AngularJs 1.2.0以後,工廠無法工作?

這裏是演示:http://plnkr.co/edit/w2O8Ci 它不能顯示「世界」,但如果你改變angularjs回到1.1.5,一切工作正常。

下面是代碼:

<!DOCTYPE html> 
<html ng-app="myApp"> 

<head> 
    <!--<script src="http://code.angularjs.org/1.1.5/angular.min.js"></script>--> 
    <script src="http://code.angularjs.org/1.2.9/angular.min.js"></script> 
    <script> 
     var app = angular.module('myApp', []); 
     app.factory('NameFactory', function($http, $q) { 
      return { 
       getName: function() { 
        var deferred = $q.defer(); 
        deferred.resolve({ 
         name: "World" 
        }); 
        return deferred.promise; 
       } 
      } 
     }); 

     app.controller("NameCtrl", function($scope, NameFactory) { 
      $scope.name = NameFactory.getName(); 
     }); 
    </script> 
</head> 

<body ng-controller="NameCtrl"> 
<h1>Hello, {{name.name}}</h1> 
</body> 

</html> 
+1

[Angularjs承諾不綁定到1.2中的模板]的可能重複(http://stackoverflow.com/questions/19472017/angularjs-promise-not-binding-to-template-in-1-2) – Frans

回答

2

你在$resource作品......不是這樣的承諾工作的方式使用的承諾。你應該這樣做在你的控制器的承諾API在1.2

NameFactory.getName().then(function(data){ 
    $scope.name = data 
    }); 
+0

謝謝你的解決方案! – PunCha