我有一个方案来处理params。 (当param存在时,它会以不同的方式处理)
那么,我如何保留2个模板并根据要求使用它们?目前我正在尝试这样,这根本不起作用。
任何人帮助我?
我的状态有2个模板:(请帮我纠正)
x = 5 | 1 0101 | 0001 0101 = 5
这里是两个场景的重定向:(如果我错了,请纠正我)
.state('serialCreateCase', {
url: '/serialCreateCase?sn=',
views:{
"" : {
"templateUrl": 'app/login/loginWithSerial.html'
},
"?sn=" : {
"templateUrl": 'app/login/login.html'
}
}
})
答案 0 :(得分:1)
我想说你需要用
代替templateUrlTemplates
TemplateUrl ...
templateUrl也可以是返回url的函数。它需要一个预设参数stateParams,它不是 注入。
TemplateProvider
或者您可以使用模板提供程序函数,该函数可以注入,可以访问本地,并且必须返回模板HTML, 像这样...
有更多细节和掠夺者
这我最喜欢
...
templateProvider: [$stateParams, '$templateRequest',
function($stateParams, templateRequest)
{
var tplName = "pages/" + $stateParams.type + ".html";
return templateRequest(tplName);
}
],
(选中here),因为它也使用 $templateRequest
这可能是状态def
.state('serialCreateCase', {
url: '/serialCreateCase?sn',
views: {
"": {
templateProvider: ['$stateParams', '$templateRequest',
function($stateParams, templateRequest) {
var tplName = "app/login/loginWithSerial.html";
if($stateParams.sn){
tplName = "app/login/login.html";
}
return templateRequest(tplName);
}
]
},
}
});
我们真正需要的是始终传递一些价值,如 sn
。所以,这些应该是电话:
// we need to pass some value, to be sure that there will be other than last
<a ui-sref="serialCreateCase({sn: null})">
// here is reasonable value
<a ui-sref="serialCreateCase({sn:'1234'})">
检查here实际操作
答案 1 :(得分:1)
使用,$stateParams
代替toParams
,
1)根据参数确定模板(您的要求)
.state('serialCreateCase', {
url: '/serialCreateCase?sn=',
views: {
'': {
templateUrl: function(stateParams) {
var param = stateParams.sn
return (param == undefined) ? 'app/login/loginWithSerial.html' : 'app/login/login.html'
},
controller: 'myController',
}
}
})
您可以使用stateParam
参数查看templateUrl
,然后更改模板。
2)根据控制器的参数更改状态。
这是一个示例控制器,您可以在其中查看state parameter
并按照您的意愿使用重定向。
allControllers.controller('myController', ['$scope','$rootScope','$state','$stateParams',
function($scope,$rootScope,$state,$stateParams) {
if(!$rootScope.isUserLoggedIn)
{
if($stateParams.sn !== undefined )
{
alert('dont take action', $stateParams.sn );
}
else
{
alert('You can redirect, no parameter present');
}
}
}
}])