【问题标题】:Changes-aware list in angularjsangularjs中的变化感知列表
【发布时间】:2016-07-08 22:42:39
【问题描述】:

我正在对现有的 angularjs 代码做一些工作,并且我有类似的东西:我在客户端有一个对象列表,我通过 put 请求将其传输到服务器端。

现有代码只是将$scope 中的对象列表按原样放入json 中。

我想实现一种机制,其中仅发送自某些事件以来已更改的对象。

我可以通过硬编码来执行此操作并保存另一个对象列表并在我提交更改时将其清除,但我想要更清晰的内容 - 例如,更改感知列表,

然后,我可以像list.changedObjects 那样做一些事情。

我似乎无法从基础研究中找到类似的东西,所以我希望你们能对此有所了解。

【问题讨论】:

  • 您已经描述了 Angular 的核心功能之一,以及 React、Vue、Ember 和其他一些功能。
  • 如果它是核心功能,我实际上如何使用它?并感谢@Marty 的快速评论
  • 使用 $watch 跟踪对象的更改,如果任何对象值发生更改,它将执行。
  • 我不是很喜欢 Angular,也没有使用太多,但绝对有一种方法可以做你想做的事。
  • @AmitSirohiya,正如我所指出的,我对 AngularJS 不是特别熟悉,所以欢迎提供更详细的解释

标签: javascript angularjs list


【解决方案1】:

我觉得这是Observer pattern 的用例。 https://github.com/melanke/Watch.JS 有一个 lib/example 来观察 javascript 对象的变化。然后您可以在Angular 中触发一个事件来相应地完成您的工作 http://jsfiddle.net/2zT4C/23/

【讨论】:

    【解决方案2】:

    $watch 有助于监听 $scope 的变化


    AngularJS 可以检查返回的值与 watch 函数上次返回的值。这样 AngularJS 可以确定值是否发生了变化。

    $scope.$watch('list', $scope.sendNewList, true);
    

    如果对象的新值不等于对象的旧值,即它已被更改,它将更新innerHtml。

    有关详细信息,请查看此 - $watch()$watch

    AngularJS watch array of objects for data change

    【讨论】:

    • 假设我有一个对象列表,我想查看该列表中的所有项目,我该怎么做?
    • 观看列表而不是返回“scope.data.myVar”返回您的列表。
    • 那么我如何知道列表中的哪个对象被更改了?我假设如果我查看列表,我会在newValue 中获得整个新列表
    • 我假设您的列表是一个对象数组。
    • 使用 $watchCollection 代替 $watch
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 2013-10-10
    • 1970-01-01
    • 2014-08-24
    • 2013-07-24
    相关资源
    最近更新 更多