我有一个使用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
之间的重定向行为会有所不同?
答案 0 :(得分:0)
我认为你在重新定义函数时遇到了问题 - 我忘了这个术语,但是$rootScope
中$scope
中定义的所有函数都可以在$rootScope
中使用,你可能会搞砸原来$rootScope
版。
例如,$rootScope.hi = function() {
console.log('hi');
}
中定义的函数如下:
$scope
可在$scope.hi();
中使用,如下所示:
$scope
您可以完全省略{{1}}版本或重命名。我想这会解决你的问题。