开发者

When AngularJS triggers an $onEval, is there any way to immediately tell what values in this scope have changed?

开发者 https://www.devze.com 2023-04-03 10:35 出处:网络
I want to sync changes to the server automatically.Currently I\'m detecting changes in a scope.$onEval handler by JSON serializing the applic开发者_StackOverflow社区ation state and comparing that to a

I want to sync changes to the server automatically. Currently I'm detecting changes in a scope.$onEval handler by JSON serializing the applic开发者_StackOverflow社区ation state and comparing that to a previously serialized copy, using diff-match-patch.

I was wondering if AngularJS has anything built in to make this more efficient.


You could use multiple $watch'es instead of a single $onEval (note that $watch can take a function as an argument instead of a string/expression, and in version >=0.10.0 the watched values are compared using angular.Object.equals). Other than that, I don't know any AngularJS mechanism that would be useful for this.


I am working on something similar. Like @psyho suggested I am using $watch to catch the changes.

scope.$watch("dataObject",function (newValue, oldValue) {
    //calculate changes
    //send the changes to the server
});

I then use the logic from jquery diff to calculate what changes were made.

0

精彩评论

暂无评论...
验证码 换一张
取 消