重新加载更改视图 url
Reload View on change url
我正在使用 angularjs
with ui-router
(with the helper 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>
正在解释
但是我的观点没有更新有问题。
我的视图是包含实际数据的视图,因此我需要它们在更改时重新加载。
比如url中的:division
是test1
,那么模板template/division.main
就有一组数据。但是当url中的:division
为test2
时,模板template/division.main
又多了一组数据
因此,每当 url 中的 :division
更改时,我需要重新加载模板 template/division.main
以及所有子模板。
但是当 :root
在 url 中发生变化时,我只需要重新加载模板 template/division.appcontent.roots
而不是 template/division.main
模板。
这是否可能,或者我应该更改为仅使用 API 来获取数据。
我真的希望这是有道理的。
备注
segment
是我为从 angular 路由获取一些数据而创建的函数。
感谢 from @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;
}
}
}
}
]
}
]
});
});
我正在使用 angularjs
with ui-router
(with the helper 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>
正在解释
但是我的观点没有更新有问题。
我的视图是包含实际数据的视图,因此我需要它们在更改时重新加载。
比如url中的:division
是test1
,那么模板template/division.main
就有一组数据。但是当url中的:division
为test2
时,模板template/division.main
又多了一组数据
因此,每当 url 中的 :division
更改时,我需要重新加载模板 template/division.main
以及所有子模板。
但是当 :root
在 url 中发生变化时,我只需要重新加载模板 template/division.appcontent.roots
而不是 template/division.main
模板。
这是否可能,或者我应该更改为仅使用 API 来获取数据。
我真的希望这是有道理的。
备注
segment
是我为从 angular 路由获取一些数据而创建的函数。
感谢
我的新 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;
}
}
}
}
]
}
]
});
});