栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

更改型号后ngRepeat不更新

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

更改型号后ngRepeat不更新

在调试中看到的$ scope.eventi是searchCtrl中的一个,而不是mainCtrl中的一个。要更新mainCtrl $
scope.eventi,您必须找到其他方法。

一个干净但漫长的解决方案将是使用服务在控制器中共享变量。

要在评论中回答问题:

我可以看到它已更新,但视图仍显示旧数据

我想是什么问题(即使我实际上没有看到您的代码)。

问题

如果您这样绑定var:

服务

[...]service.serviceVar = 1;return service[...]

这将创建一个带有引用的“ 1”变量。

控制者

  [...]  $scope.myvar = Service.serviceVar;  [...]

这会将$ scope.myvar绑定到“ 1”引用。

如果在服务或其他控制器中执行此操作:

   service.serviceVar = 2;

您将使用新引用创建一个新的变量“ 2”,并将该引用分配给service.serviceVar。严重的是,您对旧的1 var的所有旧引用都不会更新。

为了避免这种情况,请执行以下操作:

服务

[...]service.servicevar = {};service.servicevar.value = 1;return service[...]

使用新引用创建一个对象,并将其分配给servicevar。您创建一个变量“ 1”,并将其分配给servicevar.value。

控制者

[...]$scope.myvar = Service.servicevar;[...]

您将servicevar引用分配给您的范围var。

视图

{{myvar.value}}

您可以通过使用var的属性来使用该值。

更新var这样做:

service.servicevar.value = 2;

您将使用新参考创建新的变量“ 2”,并用该参考替换旧参考。

但是这次您将所有对servicevar的引用保留在控制器中。

我希望我很清楚,它可以回答您的问题。

编辑:

尝试永远不要使用$ scope。$
apply。这是一个非常糟糕的做法。如果您使用它来使某些东西起作用,那么您可能应该找到另一个来做到这一点(这对Stacks来说是一个很大的问题,我想:“为什么我需要$
apply解决我的问题XXXXX”)

rsnorman15关于您使用异步调用有一个很好的观点。也看看他的答案。

这是我使用服务共享房屋的老手之一



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448299.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号