這是一個簡單的解決方案。
首先,我在$ routeProvider配置中添加了視圖的名稱。 例如,我們所定義的路由的名稱「/登錄/:ARG1 /與/:ARG2」到「VIEW_NAME」:
myApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/login/:arg1/with/:arg2', {
templateUrl: 'app/common/login/login.tpl.html',
name: 'my_view_name'
}).
然後,我創建了一個指令,動態地改變你的視圖名稱爲正確的網址:
myApp.directive('viewUrl', function ($route) {
return {
restrict: 'A',
link: function (scope, elem, attrs) {
var splitArgs = attrs.viewUrl.split(' ');
var view_name = splitArgs.shift();
var url="route not found";
for(var route in $route.routes){
if ($route.routes[route].name == view_name){
url = route;
}
}
for (var arg in splitArgs) {
keyValue = splitArgs[arg].split(':');
url = url.replace(":"+keyValue[0], keyValue[1]);
}
elem.prop('href', url);
}
}
});
現在你可以使用view-url屬性在你的HTML組件這樣的:
<a view-url="my_view_name arg1:value1 arg2:value2">Hello World</a>
這將在href元素添加到您的鏈接,你會得到這樣的結果:
<a view-url="my_view_name arg1:value1 arg2:value2" href="/login/value1/with/value2">Hello World</a>
照顧你的論點的名稱,因爲我正在使用替換函數。
來自django自己,這不是一個Angular內置的事實超出了我。 – qff