私はangularJsの初心者で、私の考えでは、私の$scope
の変化を揺らすことで簡単な問題があります。自動腕時計を有効にするにはどうすればいいですか?
私はサーバーから受け取ったオブジェクト$scope.tasks
を持っています。それは次のようになります。
{
2: {id: 2, name: 'name1', user: 3},
3: {id: 3, name: 'name2', user: 1},
4: {id: 4, name: 'name3', user: 4},
}
また私はタスクで更新ユーザー機能を持っている:
$scope.managePlannedIterationTask = function(taskId, userId) {
var data = {
'taskId' : taskId,
'userId' : userId
};
$http.post("url", data).success(function(data, status) {
$scope.tasks[taskId].user = userId; //#1
});
};
また、私はカスタム関数$scope.test();
にこの機能を持って作業中のユーザのすべての変更後に実行する必要があり、例えば//#1
で更新クエリと更新した後、私は、この目標の$時計と$ watchCollectionのために使用しようとした:
$scope.$watchCollection('tasks', function() {
$scope.test();
})
しかし、これは役に立ちません。そして今、私が$ scope.tasksを更新するときには、すべての場所に$scope.test()
を挿入する必要があります。とても悲しい。 どうすれば自動的に行うことができますか?
いつ時計を登録し、どのように変更をトリガーしていますか? –
@DavidLコントローラの最後にウォッチを登録し、selectのng-changeでトリガを変更します。 – Neversmile
それはあなたの問題です。最初に登録してください。あなたが最後にそれを登録した場合、それが見ていた相互作用が既に終わるまで登録されない可能性があります。最後に、これはデザインの匂いを示すかもしれません。代わりに、コールバックスタイルのアプローチを検討することもできます。 –