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

服务变量未在控制器中更新

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

服务变量未在控制器中更新

更新 :好吧,您每天都会学到一些新东西…只需删除

()
即可查看函数的结果:

$scope.$watch(Auth.isAuthenticated, function() { ... });

[Updated fiddle](http://jsfiddle.net/mrajcok/wzECr/2/)

在这个小提琴中,请注意,当值

$scope.isAuthenticated
更改时,“ watch1”和“ watch3”如何触发第二次。

因此,这是 监视 服务上定义的 原始 值的更改的通用技术:

  • 定义返回原语(值)的API /方法
  • $看那个方法

监视对 服务上定义的 对象或数组的 更改

  • 定义返回对象/数组(对其的引用)的API /方法
  • 在服务中,请注意仅修改对象/数组,不要重新分配它。
    例如,不要这样做:

    user = ...;

    而是,这样做:
    angular.copy(newInfo, user)
    或这样:
    user.email = ...

  • 通常,您将为该方法的结果分配一个本地$ scope属性,因此$ scope属性将是对实际对象/数组的引用

  • $ watch范围属性

例:

$scope.user = Auth.getUser();// Because user is a reference to an object, if you change the object// in the service (i.e., you do not reassign it), $scope.user will// likewise change.$scope.$watch('user', function(newValue) { ... }, true);// Above, the 3rd parameter to $watch is set to 'true' to compare// equality rather than reference.  If you are using Angular 1.2+// use $watchCollection() instead:$scope.$watchCollection('user', function(newValue) { ... });

原始答案:

要观察一个函数的结果,您需要传递$ watch一个包装该函数的函数:

$scope.$watch( function() { return Auth.isAuthenticated() }, function() { ... });

小提琴。在小提琴中,请注意,当值

$scope.isAuthenticated
更改时,只有“
watch3”如何触发第二次。(它们都最初触发,作为$ watch初始化的一部分。)



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

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

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