标签: rootscope

多次调用函数防止$ rootScope.$ on

我在控制器顶部的代码上有一个$ rootScope.$.我注意到每次加载/调用此控制器时,$ rootScope.$ on listener都会增加意味着它会在您访问控制器时无限期地添加和添加并添加一个监听器.

当我通过$ rootScope调用它时我注意到了.$ $从另一个控制器发出,$ rootScope.$ on中的函数被执行了几次,即使它只是一次发射/广播.

$rootScope.$on('listen', function() {
    $scope.displayString();
});

$scope.displayString = function() {
    console.log('test'); // This display 7 times because I visit the controller 7 times
}
Run Code Online (Sandbox Code Playgroud)

是否可以阻止它创建另一个侦听器实例,以便在已有侦听器时,它不会创建新的侦听器.

angularjs rootscope

4
推荐指数
1
解决办法
1446
查看次数

如何在angularjs中访问$ rootscope变量?

我想将一些数据分配给一个全局变量(可能是$ rootscope),它在pageload中初始化.然后我想从所有控制器访问该数据.我该怎么办?

// Edit : I tried following and it works as expected....

function Ctrl1($rootScope) {
    $rootScope.value = "asdf";
}

function Ctrl2($rootScope, $scope) {
    $scope.value = $rootScope.value;
}
Run Code Online (Sandbox Code Playgroud)

scope controllers angularjs rootscope

3
推荐指数
1
解决办法
2万
查看次数

AngularJS数据服务与$ rootScope事件

您能否解释数据服务的使用与使用$ rootScope事件的比较.

我有一个提供编辑功能的分支列表.点击编辑按钮我正在使用根范围广播一个事件

$rootScope.$broadcast('EditBranch', branchID);
Run Code Online (Sandbox Code Playgroud)

EditBranch事件由编辑/创建控制器捕获,该控制器获取分支详细信息并以适当的编辑格式呈现它.

其他功能是我添加一个新分支,我希望它一旦添加就立即列在现有分支列表中.使用的代码如下

$rootScope.$broadcast('AddBranch', branchData);   //in create controller

$scope.$on('AddBranch', function(e, branchData){  //in listing controller 
    $scope.branches.push(branchData);
});
Run Code Online (Sandbox Code Playgroud)

以这种方式使用$ rootScope是否正确.或者我应该shredService在创建后创建用于共享分支数据的数据.

javascript angularjs angularjs-scope rootscope

3
推荐指数
2
解决办法
2768
查看次数

登录后AngularJS ui-router重定向

我有一个使用AngularJS和ui-router的项目.除了从登录屏幕重定向到第一次加载时的预览状态,一切正常.

默认状态为home - http:// test /#/

例如,如果用户未登录 - http:// test /#/ test/1000/details将转到登录页面(它应该执行此操作)

然后在用户登录后,系统进入默认状态"home - http:// test /#/ ",但我想转到http:// test /#/ requests/1000/details

登录后如何保存" http:// test /#/ requests/1000/details或stateName"以重定向?

我尝试使用$stateChangeSuccess保存状态日志,$rootscope但第一个(http:// test /#/ requests/1000/details)永远不会保存.

任何想法如何处理这个?

谢谢.

angularjs angular-ui-router rootscope

3
推荐指数
1
解决办法
5070
查看次数

$ rootScope已更改,未反映在模板上

我是angularjs的新手.我正在尝试构建一个包含登录页面和dashbboard页面的简单应用程序.

现在,当rootScope发生变化时,我遇到了更新html模板的问题.

这是我的组件模板:

<!-- show dashboard page app >
<div layout="column">
  <div ng-show="$rootScope.isAuthenticated">
    <pm-header></pm-header>
    <div layout="row">
      <pm-sidebar></pm-sidebar>
      <div layout="column" class="sitecontent" layout-padding>
        <md-content ui-view></md-content>
      </div>
    </div>
  </div>

  <!-- show login page app >
  <div ng-hide="$rootScope.isAuthenticated">
    <pm-homeheader></pm-homeheader>
    <div layout="row">
      <md-content ui-view flex></md-content>
    </div>
  </div>

</div>
Run Code Online (Sandbox Code Playgroud)

登录区块代码:

'use strict'

export default ['$rootScope', '$state', '$http', '$window', function($rootScope, $state, $http, $window) {
  this.user = {};

  this.login = () => {
    $http.post('./api/auth/login', this.user)
      .success(function(data, status, headers, config) {
        $window.sessionStorage.token = data.token;

        $rootScope.user = data.user;
        $rootScope.isAuthenticated = …
Run Code Online (Sandbox Code Playgroud)

angularjs rootscope

3
推荐指数
1
解决办法
2672
查看次数

angularjs $ rootScope.watch无效

我是angularjs的新手.我正在努力学习$watch财产.这是我的plunker.

rootScope.$watch属性仅在页面加载时执行,而不在文本更改事件上执行.但它适用于$scope.$watch.

javascript angularjs plunker rootscope

2
推荐指数
1
解决办法
6977
查看次数

$ rootscope.$ emit/$ broadcast不会传递参数

我有以下内容:

   $rootScope.$on('setmoney',function (thisdata) {

            console.log("setting money");
            console.log("money is : " + thisdata);
});
Run Code Online (Sandbox Code Playgroud)

而在其他地方:

 $rootScope.$broadcast('setmoney', {cash: 100000});
Run Code Online (Sandbox Code Playgroud)

我怎样才能确保我能在setmoney rootscope.on函数中检索参数现金?

此数据后的输出:

Object {name: "setmoney", targetScope: Scope, defaultPrevented: false, currentScope: Scope}
currentScope
:
null
defaultPrevented
:
false
name
:
"setmoney"
preventDefault
:
()
targetScope
:
Scope
__proto__
:
Object
Run Code Online (Sandbox Code Playgroud)

broadcast angularjs rootscope

2
推荐指数
1
解决办法
1525
查看次数

为什么我的Angular服务中的$ http.get()未定义?

我正在尝试加载一些JSON并使用$ rootScope存储它,以便它在控制器之间保持不变.当我运行我的应用程序时,我收到以下错误:

TypeError: Cannot call method 'get' of undefined
Run Code Online (Sandbox Code Playgroud)

get方法完美运行,直到我尝试引入$ rootScope ...任何想法?

我的服务如下:

  1 /**
  2  * Service to get the quiz data from a JSON source
  3  */
  4 app.factory('quizService', ['$rootScope', function ($scope, $rootScope, $http) {
  5     var promise;
  6     var service = {
  7         getQuiz: function($scope, $http) {
  8             if ( !promise ) {
  9                 promise = $http.get('QuizFileName.quiz').then(function (response) {
 10                     return response.data;
 11                 });
 12             }
 13             return promise;
 14         }
 15     };
 16     return service;
 17 …
Run Code Online (Sandbox Code Playgroud)

service json angularjs rootscope

1
推荐指数
1
解决办法
8086
查看次数