以前,我的代码在AngularJs 1.1.5版本中运行良好,但升级到1.2.x后,以下代码不起作用。 1.2.x中有什么变化吗?
以下是演示: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>
答案 0 :(得分:3)
是的,1.2中的内容确实发生了变化,视图无法再自动展开承诺。 见Angularjs promise not binding to template in 1.2
答案 1 :(得分:2)
你正在以$resource
的工作方式使用承诺......而不是承诺的工作方式。您应该在控制器中执行此操作.1.2
NameFactory.getName().then(function(data){
$scope.name = data
});