如果路由参数为1
,我想使用特定模板;如果是其他任何内容,我想使用另一个模板。
但是,如果我对1进行硬编码,我将失去绑定:
when("/edit/person/1", {
},
templateUrl: 'partials/proband.html',
controller: "PersonCtrl"
}).
when("/edit/person/:person_id", {
},
templateUrl: 'partials/person-form.html',
controller: "PersonCtrl"
}).
处理此问题的最佳方法是什么?
答案 0 :(得分:1)
when("/edit/person/:person_id", {
},
templateUrl: 'partials/person-form.html',
controller: "PersonCtrl"
})。
仅使用此路线并指定" if"控制器中的声明。例如,你可以这样做:
if ($stateParams.person_id === 1) {
//Do something
}
基本上就是这样,或者你可以在状态上指定一个匿名控制器。另外,在https://github.com/angular-ui/ui-router文档中获取一个战利品,它可以很好地了解params。希望它有所帮助。
答案 1 :(得分:0)
我不确定这是最好的方法,但您可以通过$rootScope
run
块.run(function($rootScope) {
$rootScope.$on('$routeChangeStart', function (event, next) {
// If person_id is 1
var person_id_1 = (next.originalPath === "/edit/person/:person_id") &&
next.params.person_id === '1';
if (person_id_1) {
// Set templateUrl
next.templateUrl = 'partials/proband.html';
}
});
})
内的$routeChangeStart
听众来解决您的问题:
var dd_value = document.getElementById("dd_value");
var mm_value = document.getElementById("mm_value");
var yy_value = document.getElementById("yy_value");
(dd_value+mm_value+yy_value).onchange = function(){
var textbox = document.getElementById("bdaysummary");
textbox.value = dd_value;
};