我想基于$ state更改socket.io
连接,因此当用户更改状态时,我想将$stateParams
分配给searchEnv
,以便我们可以使socket
连接处于活动状态并开始接收该环境的消息。如果我有$ state app.dit
,我想将envId设置为dit
。
如何使用angular $ stateProvider?
尝试为$ States实现一个视图和控制器而不是多个。
Ctrl.js
var searchEnv = $stateParams.envId;
socket.on(searchEnv + 'Consumer', function(data) {
$scope.event.push(data);
});
app.js
.state('app.dit', {
url: '/dit/:envId',
templateUrl: 'view/partials/dit.html',
controller: 'DitCtrl'
})
.state('app.st', {
url: '/st/:envId',
templateUrl: 'view/partials/dit.html',
controller: 'DitCtrl'
})
mainCtrl.js
$scope.tabs = [{
heading: 'Home',
route: 'app.home',
active: true
},
{
heading: 'DIT',
route: 'app.dit',
active: false
},
{
heading: 'ST',
route: 'app.st',
active: false
},
{
heading: 'UAT',
route: 'app.uat',
active: false
},
{
heading: 'LSP',
route: 'app.lsp',
active: false
}
];
答案 0 :(得分:0)
您可以在$stateChangeStart
$scope
或$rootScope
上观看controller
上的操作
$rootScope.$on('$stateChangeStart',
function(event, toState, toParams, fromState, fromParams, options){ ... })
答案 1 :(得分:0)
使用$state.includes
方法:
//EXAMPLES
$state.$current.name = 'contacts.details.item';
// Using partial names
$state.includes("contacts"); // returns true
$state.includes("contacts.details"); // returns true
$state.includes("contacts.details.item"); // returns true
$state.includes("contacts.list"); // returns false
$state.includes("about"); // returns false