詳細を取り除いて、これをかなり一般化しようとしました...
1.2 rc2 を使用すると、私のコードは正常に動作しました。1.2 安定版に更新し、$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 は結果ではなく関数として設定されているように見えます)、それを解決する適切な方法は約束によるものだと思います。(サービス自体が promise を正常に使用していることに注意してください。)ただし、promise が解決されたときに $scope を更新するのに苦労しています。
次のコードは正しい軌道に沿っていると思います。$q がコントローラーに注入されます。
...
$scope.updateChildObject = function(args) {
var defer = $q.defer();
defer.promise.then(function() {
return FactoryService.getSomethingFromServer(args);
});
$scope.object.childObject = defer.resolve();
};
...
ここで私が間違っていることを誰かに教えてもらえますか?約束は、私がまだ実際にクリックしていないものの1つにすぎません。