如何使用angularjs路由来调用javascript函数

时间:2013-08-27 14:10:53

标签: function angularjs routing

如果使用某个网址,我正在尝试使用angularjs的路由来调用javascript函数。

以下代码未提供预期结果:

var app = angular.module('myApp', []);

app.config(function($routeProvider) {
    $routeProvider.when('/link1', {
         controller: 'PageController'
   })
   .when('/link2', {
        controller: 'PageController'
   })
   .otherwise({ 
        controller: 'PageController'
   });
});

app.controller('PageController', function($scope, $routeParams) {
   alert('1');
});

如果请求其中一个网址,则不会调用alert(1); ...

也许有人知道如何解决这个问题?

3 个答案:

答案 0 :(得分:6)

在$ routeProvider配置中指定template或templateUrl选项之前,不会调用Controller。如果不需要模板,则可以指定一个空格字符(但不是空字符串)。像这样

$routeProvider.when('/link1', {
     controller: 'PageController',
     template: ' '
})

答案 1 :(得分:1)

无法将路由与控制器中的特定操作相关联。 AngularJS中的路由与其他Web框架中的路由不同,以路由到请求的特定操作。相反,AngularJS中的路由主要与处理页面流有关,控制器定义了页面的范围。

但是,如果您将警报放在控制器中,则应在加载页面时触发警报。您需要检查您使用的URL是否正确。要进行测试,您只需将$location.url('/link1')放入代码即可。

答案 2 :(得分:0)

如果您的控制器正在特定路线上使用,那么您可以在控制器内调用该功能。一旦路线改变并且你的控制器被调用,它就会被执行。

在此http://plnkr.co/edit/qUZ5Q7nKCRAS8dFvjRIg中,当您点击link1时,它会显示警告。

我无法理解为什么你的代码没有按预期工作,但我创建了一个类似的应用程序设置,它可以工作:

var app = angular.module('myApp',[]).

config(['$routeProvider',function($routeProvider) {
      $routeProvider.
          when('/', {
            controller: 'PageController',
            template: '<br><br>this is page #/<br> {{data}}',
          }).
          when('/link1', {
            controller: 'SpecificPageController',
            template: '<br><br>this is page #/link1<br> {{data}}' 
          }).
          when('/link2', { 
            controller: 'PageController',
            template: '<br><br>this is page #/link2<br> {{data}}' 
          }).
          otherwise({redirectTo:'/'});
    }]).

controller('PageController', function($scope, $routeParams) {
    $scope.data = 'hello world';
}).

controller('SpecificPageController', function($scope, $routeParams) {

    $scope.data = 'hello specific';
    alert(1);    
});

每当将SpecificPageController分配给路由并打开该路由时,都会执行alert函数。