2017-03-08 102 views
0

我只是在angularjs的初学者我想要更改angularjs控制器名称根据名称是用templateUrl写入。如何更改angularjs控制器名称

这里是例子

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

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

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

我有很多的控制器这样所以要根据哪条路线templateUrl被点击imigiatily改变控制器的名称,应该担任这样写相同的默认方式

回答

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'; 
}); 
+0

感谢您的答复,但我不想做不同的控制器,只想做一个控制器,并根据路由页面,因为有大约25控制器,并在每个控制器只改变名称和路径,以便通过它的名字我认为它应该只有一个。好吗? – Zeeshan

+0

喜Zeeshan,所以如果你想使用相同的控制器,那么为什么你需要不同的名称?如果控制器及其行为对于所有模板url相同,那么您可以为所有模板使用一个控制器。 –

+0

嗨Rupesh,我有不同的名称在不同的templateUrl作为ng-controller ='名称' – Zeeshan

相关问题