从$ rootScope更改$ location

时间:2014-08-10 07:17:08

标签: javascript angularjs

我有一个使用AngularJS的网络应用。我有两个功能。一个在$rootScope上声明,另一个在$scope上声明。代码如下所示:

app.js

app.run(function ($rootScope, $location) {
  $rootScope.settings_Click = function() {
    $console.log('clicked in root scope.');
    $location.url('/user/settings');
  };
});

viewController.js

app.controller('ViewController', function($scope, $rootScope, $location) {
  $scope.settings_Click = function() {
    $console.log('clicked in local scope.');
    $location.url('/user/settings');
  };
});

虽然这两个函数都被调用,但只有后者重定向到/user/settings视图。我无法弄清楚原因。如果我触发使用settings_Click的{​​{1}}事件,则不会引发任何错误。用户被重定向到应用程序中的第一页而不是设置页面。然而,重定向与$rootScope中的重定向相同。

为什么$scope$scope之间的重定向行为会有所不同?

1 个答案:

答案 0 :(得分:0)

我认为你在重新定义函数时遇到了问题 - 我忘了这个术语,但是$rootScope$scope中定义的所有函数都可以在$rootScope中使用,你可能会搞砸原来$rootScope版。

例如,$rootScope.hi = function() { console.log('hi'); } 中定义的函数如下:

$scope

可在$scope.hi(); 中使用,如下所示:

$scope

您可以完全省略{{1}}版本或重命名。我想这会解决你的问题。