加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 在工厂对象上发出$watch问题

发布时间:2020-12-17 17:24:58 所属栏目:安全 来源:网络整理
导读:我在我的工厂中设置了一个变量socialRegisterFactory.pages,一旦FaceBook中的信息被完全加载就会更新.我正在尝试在我的控制器中观察这个变量,以便在加载信息时以及当该变量从false变为true时,watch函数会相应地更新范围.我已经在控制器中注销了工厂的变量,它
我在我的工厂中设置了一个变量socialRegisterFactory.pages,一旦FaceBook中的信息被完全加载就会更新.我正在尝试在我的控制器中观察这个变量,以便在加载信息时以及当该变量从false变为true时,watch函数会相应地更新范围.我已经在控制器中注销了工厂的变量,它确实显示正确,但范围没有正确更新.我的$watch功能有问题吗?

我的控制器:

$scope.pagesLoaded = false;

    $scope.$watch(socialRegisterFactory.pages,function(newVal,oldVal){
        if (socialRegisterFactory.pages === true) {
            alert("true!");
            $scope.pagesLoaded = true;
        }
    },true);

我的工厂:

var socialRegisterFactory ={
        pages: false,getAvailablePages: function($scope){
            return $http.get(settings.urlBase+'social/facebook/pages')
                .then(function(resp) {
                    socialRegisterFactory.pages = true;
                    angular.copy(resp.data.data,socialRegisterFactory.fbPages);
                    //$scope.fbPages = socialRegisterFactory.fbPages;
                    return  socialRegisterFactory.fbPages;
                });
        },

解决方法

$scope.$watch的第一个参数可以是字符串或函数.

Angular docs here.

不确定这会在你的具体情况下有效,但是嘿.

例如

$scope.$watch(
  function() { return socialRegisterFactory.pages; },oldVal) {
    if (socialRegisterFactory.pages === true) {
        alert("true!");
        $scope.pagesLoaded = true;
    }
  },true
);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读