首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在angularJS之外观察变量

在angularJS之外观察变量
EN

Stack Overflow用户
提问于 2015-08-26 07:02:12
回答 1查看 576关注 0票数 1

所以我正在开发一个Ionic HTML5混合应用程序。我使用Firebase存储数据,并使用Auth0进行身份验证。一切都进行得很顺利,但我遇到了一个小问题,我似乎无法弄清楚,因为我对AngularJS的新鲜感。看来我应该在这里使用$apply,但是在这方面,文档是相当混乱的,我无法弄清楚。

我有一个视图,在这个视图中,我希望用户能够链接尚未链接到他们帐户的社交帐户。它的工作方式是检查哪些auth提供程序在该用户的配置文件中。HTML如下:

代码语言:javascript
运行
复制
<ion-view title="Account">
  <ion-content class="has-header padding">
    <button class="button button-block button-positive icon-left icon ion-social-facebook" ng-if="facebookCheck() == false" ng-click="linkFacebook()"> Add Facebook Account</button>
    <button class="button button-block button-calm icon-left icon ion-social-twitter" ng-if="twitterCheck() == false" ng-click="linkTwitter()"> Add Twitter Account</button>
    <button class="button button-block button-dark icon-left icon ion-social-instagram" ng-if="instagramCheck() == false" ng-click="linkInstagram()"> Add Instagram Account</button>
    <br>  
    <button class="button button-assertive button-block" ng-click="logout()">Logout</button>
  </ion-content>
</ion-view>

这是控制器。如果您注销或关闭应用程序并重新打开,这完全符合我的要求,但我希望它监视auth.profile中的更改,因此当用户登录到一个可用的提供程序并返回到视图后,使用该提供程序登录的按钮将从视图中消失。

代码语言:javascript
运行
复制
.controller('AccountCtrl', function($scope, auth, $state, store) {

  $scope.logout = function() {
    auth.signout();
    store.remove('token');
    store.remove('profile');
    store.remove('refreshToken');
    $state.go('login');
  }

  $scope.profile = auth.profile;

  $scope.facebookCheck = function() {
     for (i = 0; i < $scope.profile.identities.length; i++) {
        if (angular.equals($scope.profile.identities[i].provider, "facebook")) {
                     return true;
        }
    }

    return false;
};

   $scope.twitterCheck = function() {
     for (i = 0; i < $scope.profile.identities.length; i++) {
        if (angular.equals($scope.profile.identities[i].provider, "twitter")) {
                     return true;
        }
    }

    return false;
};

   $scope.instagramCheck = function() {
     for (i = 0; i < $scope.profile.identities.length; i++) {
        if (angular.equals($scope.profile.identities[i].provider, "instagram")) {
                     return true;
        }
    }

    return false;
};

  $scope.linkTwitter = function () {
    var lock = new Auth0Lock('ywxuAvQN38sQqiiwYz3CJ3IsPUiEg94x', 'fanzee.auth0.com');

    lock.show({
      dict: {
        signin: {
          title: 'Link another account'
        }
      },
      connections: ['twitter'],
      authParams: {
        access_token: auth.accessToken
      }
    })
};

  $scope.linkFacebook = function () {
    var lock = new Auth0Lock('ywxuAvQN38sQqiiwYz3CJ3IsPUiEg94x', 'fanzee.auth0.com');

    lock.show({
      dict: {
        signin: {
          title: 'Link another account'
        }
      },
      connections: ['facebook'],
      authParams: {
        access_token: auth.accessToken
      }
    })
};

  $scope.linkInstagram = function () {
    var lock = new Auth0Lock('ywxuAvQN38sQqiiwYz3CJ3IsPUiEg94x', 'fanzee.auth0.com');

    lock.show({
      dict: {
        signin: {
          title: 'Link another account'
        }
      },
      connections: ['instagram'],
      authParams: {
        access_token: auth.accessToken
      }
    })
};

我知道很多这可能是在服务,但我正在移动的东西,试图使它正常工作。我应该在这里做什么?如何获得角度来监视auth.profile的更改?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-26 07:37:36

正如您在这里看到的,当配置文件发生变化时,我们发出一个事件,然后在控制器上捕获它。如果删除事件捕捉器部件,则当单击按钮时,配置文件将发生更改,但$scope.profile值将不会被更新。

参见这个柱塞:示例柱塞

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32219963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档