私は私の約束の奇妙な振る舞いをしています。次のプランクを参照してください: http://plnkr.co/edit/uBuBS3Oi7mIPob2jtqkm
これは、Marc Galgleish の非常に優れた記事 ( http://markdalgleish.com/2013/06/using-promises-in-angularjs-views/ ) のプランクに基づいています。
私のコントローラーには、messages という名前の単純な $scope 属性があります (サービスから defer オブジェクトを取得します)。
angular.module('myModule', [])
.controller('HelloCtrl', function($scope, HelloWorld) {
$scope.messages = HelloWorld.getMessages();
$scope.click = function()
{
alert($scope.messages[0]);
}
});
予想どおり、約束が(解決ごとに)満たされた後、ビューは実際の値を取得して表示しています。しかし、ボタンをクリックしてクリック機能を実行すると、期待どおりに $scope.messages を使用できません。約束はそこで解決されるのではなく、ビューだけで解決されます。
と ( http://plnkr.co/edit/vX3dSFjzB6R7q4Oed7Gj )
HelloWorld.getMessages().then( function(data){
$scope.messages = data;
});
すべて正常に動作しますが、それは私にとっては解決策ではありません。私の実際のアプリケーションでは、サーバーとの同期が必要な場合は、既に同期され、キャッシュされた複雑なオブジェクト (ローカル ストレージから) または promise のいずれかを返すサービスです。同期後に更新されたオブジェクトを返します。
何か案は?
事前にThxクヌート