gpt4 book ai didi

javascript - AngularJS 有数据更新回调吗?如何在数据更改时手动更新页面?

转载 作者:行者123 更新时间:2023-12-02 07:36:21 24 4
gpt4 key购买 nike

我浏览了 AngularJS 教程,它非常简洁。我也接触过 Backbone 和 Ember.js(尽管对两者都不完全熟悉),但我听到了很多对 AngularJS 的赞美,我想看看它是否适合我。

我有一个专注于大型 Google map 的网站(想想像 Padmapper.com 这样的网站)。目前有超过 2,000 辆汽车在页面加载后通过 JSON 加载,而 JSON 需要 1-2 秒才能到达。然后根据汽车位置用标记填充 map 。我有一个过滤器表单,用户可以使用它根据许多不同的属性(比如颜色、汽油量等)过滤汽车。当前提交此过滤器表单会使用过滤器查询后端,然后返回过滤后的汽车。这是对时间的巨大浪费。

我想在初始化时加载所有项目,然后在它们更改值时使用前端进行过滤。在 AngularJS 教程中,当我在过滤器框中键入内容时,项目会出现和消失。很酷。但是我该如何处理 map 标记呢?如何定义回调函数以在 map 标记进入后手动更新它们?我需要以某种方式使用自定义指令吗? (仍然不完全确定这些是做什么的...)

我可以想到一个 jQuery 解决方案,即有一个无序列表的汽车,观察它的变化,并根据需要隐藏/显示标记。但我正试图摆脱 jQuery。任何帮助表示赞赏!谢谢!

最佳答案

在一个指令中,您可以 $watch 观察汽车列表的变化并重新应用 map 上的标记。我不熟悉谷歌地图编程,但这里试图说明我在说什么:http://plnkr.co/edit/d8Dn6epgnQ9UvWrMDAk8?p=preview

编辑:

我找到了一种跟踪过滤结果的好方法:

<tr ng-repeat="item in (filteredcars = (cars | filter: query))">

这会即时创建变量 filteredcars,无需在输入查询上绑定(bind)更改事件!

总结一下:

1) 您可以 $watch data 进行更改。但是不要忘记第 3 个参数来告诉它是一个数组。

scope.$watch('myvar', function(newval, oldval) {...}, true);

2) 您可以动态创建一个变量,其中包含来自 ng-repeat 的表达式的过滤结果。

3) 不要忘记在附加子元素之前清空 map 元素,否则,过滤后的元素将无法正常工作。

关于javascript - AngularJS 有数据更新回调吗?如何在数据更改时手动更新页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16001413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com