我试图去除细节并使其相当概括......
使用 1.2 rc2 我的代码运行良好,在更新到 1.2 stable 并更正 $parse 更改后,我遇到了绑定问题。在更新之前,以下代码可以正常工作。updateChildObject()
从 html 页面调用。
.when('/the-page/', {
controller: function($scope, serviceResults, FactoryService) {
$scope.object.childObject = serviceResults;
// this function used to work. Now assigns the function to the
// scope rather than the results
$scope.updateChildObject = function(args) {
$scope.object.childObject = FactoryService.getSomethingFromServer(args);
};
},
resolve: {
serviceResults: function(FactoryService) {
return FactoryService.getSomethingFromServer(args);
}
}
由于这现在失败了($scope.object.childObject 似乎被设置为函数而不是结果)我相信解决它的适当方法是通过承诺。(请注意,服务本身正在成功使用承诺。)但是,当承诺解决时,我很难让 $scope 更新。
我相信以下代码是正确的。$q 被注入到控制器中。
...
$scope.updateChildObject = function(args) {
var defer = $q.defer();
defer.promise.then(function() {
return FactoryService.getSomethingFromServer(args);
});
$scope.object.childObject = defer.resolve();
};
...
那么谁能告诉我我在这里做错了什么?承诺只是我还没有真正点击的那些事情之一。