我的仪表板中有10个类似的框,每个框都显示特定设备的不同值。当用户点击每个时,我必须将它们引导到新页面,该页面显示有关该设备的更多信息。
所有设备的第二页布局都是一样的。我只需要更新$ scope。
实现此目的的干净角度方式是什么,最好不要在网址中添加查询?
我正在使用$ stateProvider并试图让它与onEnter()一起工作但还不行。
答案 0 :(得分:1)
$stateParams
应该做到这一点。要使用它,您需要在路由时指定参数。例如:
(function(){
'use strict';
angular
.module('app')
.config(ApplicationConfig);
//set dependencies for ApplicationConfig
ApplicationConfig.$inject = ['$stateProvider'];
function ApplicationConfig($stateProvider){
//Define route states
$stateProvider
.state('main', {
abstract: true,
url: '/main',
templateUrl: 'pages/main/main.html',
controller: 'MainCtrl',
controllerAs: 'main',
cache: true,
params: {
user: null
}
});
}
然后使用$state.go('stateName', { param: param })
,例如(按照上一个示例):
//Inside your original controller
function goToMainPage(param) {
$state.go('main', { user: param });
}
最后,您可以通过$stateParams.param
访问目标控制器中的参数,或者在前面的示例中$stateParams.user
。