如何更改angularjs控制器名称

时间:2017-03-08 19:56:21

标签: javascript jquery html angularjs

我只是angularjs的初学者我想根据名字更改angularjs控制器名称是用templateUrl编写的。

这是示例

.when({ templateUrl:'template.html',controller:'mycontrollername'})

现在我想在波纹管控制器名称上发送上面的控制器名称。

app.controller('6th-septemberCtrl', ['$scope','$http','filterFilter', function ($scope,$http, filterFilter) {});

我有很多像这样的控制器,所以想发送控制器名称,根据哪条路由templateUrl点击,改变控制器名称,并按照相同的默认方式编写工作

1 个答案:

答案 0 :(得分:0)

我会创建一个静态类,它将保存每个模板的控制器名称。 使用相同的类来获取控制器的名称。这是我在代码中的例子。

var app = angular.module("plunker", ["ngRoute"]);
app.config(function($routeProvider) {
  $routeProvider
    .when("/", {
      templateUrl: "main.htm",
      controller: getControllerName('main.htm')
    })
    .when("/red", {
      templateUrl: "red.htm",
      controller: getControllerName('red.htm')
    })
    .when("/green", {
      templateUrl: "green.htm",
      controller: getControllerName('green.htm')
    });

});

function getControllerName(url) {
  for(var i=0; i<templateControllers.length; i++) {
    if(templateControllers[i].url === url)
      return templateControllers[i].controllerName;
  }
}

var templateControllers = [{
  url: 'main.htm',
  controllerName: 'mainController'
}, {
  url: 'red.htm',
  controllerName: 'redtroller'
}, {
  url: 'green.htm',
  controllerName: 'greenController'
}];

//create controller for main url
app.controller(getControllerName('main.htm'), function($scope) {
  $scope.name = 'main';
});


//create controller for red url
app.controller(getControllerName('red.htm'), function($scope) {
  $scope.name = 'red';
});



//create controller for green url
app.controller(getControllerName('green.htm'), function($scope) {
  $scope.name = 'green';
});