我可以在angular js asp.net mvc中的控制器中调用Route Provider服务吗?

11 浏览
0 Comments

我可以在angular js asp.net mvc中的控制器中调用Route Provider服务吗?

我在我的Angularjs控制器中使用控制器,逐个从服务器获取问题,并且希望在特定条件下,这个控制器应该调用routeprovider,用templateUrl更改当前视图并放入指令。我的问题是,我可以在控制器中调用routeprovider而不是模块吗?\n在我的CreateController中,我希望在qId等于10时,调用routeprovider和directive,请提供帮助。\n我已经在app.js文件中使用了routeprovider,那里它起作用。当我将routeprovider的代码移到create controller中的条件if qId == 10时,它不起作用。\n这是app.js的代码,当我这样做时,它起作用;当我将routeprovider的代码移到create controller中的条件if qId == 10时,它不起作用。\nvar app = angular.module(\'app\', [\'ngRoute\']);\napp.controller(\'CreateController\', CreateController);\napp.config(function ($routeProvider) {\n $routeProvider\n .when(\'/\',\n {\n templateUrl: \'Partials/TestCompleted.html\',\n controller: \'AppCtrl\'\n })\n .otherwise({ redirectTo: \'/\' });\n});\napp.controller(\"AppCtrl\",function ($scope) {\n $scope.newmodel = {\n }\n});

0
0 Comments

问题的原因是在AngularJS的控制器中调用路由提供者服务。这是因为在AngularJS中,控制器主要用于处理业务逻辑,而路由提供者服务主要用于管理视图和路由之间的关系。在控制器中调用路由提供者服务是不推荐的做法。

解决方法是定义另一个路由,然后在需要切换视图时使用$location服务更新路径。可以通过以下代码实现:

app.config(function($routeProvider) {
  $routeProvider
    .when('/view1', {
      templateUrl: 'view1.html',
      controller: 'Controller1'
    })
    .when('/view2', {
      templateUrl: 'view2.html',
      controller: 'Controller2'
    })
    .otherwise({
      redirectTo: '/view1'
    });
});
app.controller('Controller1', function($location) {
  $location.path('/view2');
});
app.controller('Controller2', function($location) {
  $location.path('/view1');
});

通过以上方法,可以在控制器中使用$location服务来切换视图。

更多关于在控制器中切换视图的信息,请参考AngularJS : How do I switch views from a controller function?

0