2017-03-08 77 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