我使用angularjs
和ui-router
(使用帮助器stateHelperProvider
)将视图和控制器收集到页面中。
但是我的观点没有更新问题。
config.js
app.config(function($httpProvider, $urlRouterProvider, RestangularProvider, stateHelperProvider) {
$urlRouterProvider.otherwise("/");
stateHelperProvider
.state({
name: 'division',
url: '/division/:division',
views: {
'main': {
templateUrl: '/templates/division.main?uri=' + segment(2),
controller: 'DivisionController'
}
},
children: [
{
name: 'appcontent',
url: '/content',
views: {
'content': {
templateUrl: "templates/division.appcontent?uri=" + segment(2) + '&root=' + segment(4),
controller: 'AppContentController'
}
},
children: [
{
name: 'root',
url: '/:root',
views: {
'roots': {
templateUrl: "templates/division.appcontent.roots?uri=" + segment(2) + '&root=' + segment(4)
}
}
}
]
}
]
});
});
我用于链接的代码
// linking to another division
<a ui-sref="division.appcontent({division: 'test2')">test2</a>
// linking to another root
<a ui-sref="division.appcontent.root({division: 'test2', root: 'test')">test2</a>
但是我的观点没有更新问题。
我的观点是具有实际数据的观点,因此我需要它们在更改时重新加载。
例如,当网址中的:division
为test1
时,模板template/division.main
就会有一组数据。但是当网址中的:division
为test2
时,模板template/division.main
会有另一组数据。
因此,每当网址中的:division
发生变化时,我都需要重新加载模板template/division.main
以及所有子模板。
但是,当:root
更改网址时,我只需要重新加载模板template/division.appcontent.roots
而不是template/division.main
模板。
这是否可行,或者我应该更改为仅使用API来获取数据。
我真的希望这是有道理的。
segment
是我从角度路径获取一些数据的功能。
答案 0 :(得分:0)
感谢来自comment的@ChrisT我设法使用templateUrl作为函数。
我的新config.js:
app.config(function($httpProvider, $urlRouterProvider, RestangularProvider, stateHelperProvider) {
$urlRouterProvider.otherwise("/");
stateHelperProvider
.state({
name: 'division',
url: '/division/:division',
views: {
'main': {
templateUrl: function(params) {
return '/templates/division.main?uri=' + params.division;
},
controller: 'DivisionController'
}
},
children: [
{
name: 'appcontent',
url: '/content',
views: {
'content': {
templateUrl: function(params) {
return 'templates/division.appcontent?uri=' + params.division + '&root=';
},
controller: 'AppContentController'
}
},
children: [
{
name: 'root',
url: '/:root',
views: {
'roots': {
templateUrl: function(params) {
return 'templates/division.appcontent.roots?uri=" + params.division + '&root=' + params.root;
}
}
}
}
]
}
]
});
});