转到视图并使用 ui-router 触发 $scope 函数
Go to a view and trigger a $scope function with ui-router
我知道这个问题是为了破解,但这是动机:
- 我正在为我相当复杂的应用程序设计一个 "shortcut" 视图。用户希望在不同的视图中触发功能。
- 不同的用户对好用的快捷方式有不同的看法
- 例如,一个用户可能想要定义一个 "goes to view
app.montage
and triggers $scope.toggleInfo()
" 的快捷方式
- 另一个用户可能想要定义一个完全不同的快捷方式来调用现有视图 UI
中 3 层深处的函数
所以底线是,我可以设计类似的东西吗:
$state.go('state name')
&& 然后在该状态下启动功能?
我知道我可以定义 URL 路线,但它是一个相当复杂的应用程序,如果可以的话,它更容易执行 "trigger" 操作。
$stateProvider.state('users', {
url: '/users',
controller: 'UsersCtrl',
params: {
obj: null
}
})
function UserCtrl($stateParams,$scope) {
console.log($stateParams);
$stateParams.obj && $stateParams.obj.toggleInfo && $scope.toggleInfo();
}
$state.go('users', {obj:{toggleInfo: true});
有关详细信息,请参阅 UI-Router Wiki - Using Parameters without Specifying Them in State URLs。
我知道这个问题是为了破解,但这是动机:
- 我正在为我相当复杂的应用程序设计一个 "shortcut" 视图。用户希望在不同的视图中触发功能。
- 不同的用户对好用的快捷方式有不同的看法
- 例如,一个用户可能想要定义一个 "goes to view
app.montage
and triggers$scope.toggleInfo()
" 的快捷方式
- 另一个用户可能想要定义一个完全不同的快捷方式来调用现有视图 UI 中 3 层深处的函数
所以底线是,我可以设计类似的东西吗:
$state.go('state name')
&& 然后在该状态下启动功能?
我知道我可以定义 URL 路线,但它是一个相当复杂的应用程序,如果可以的话,它更容易执行 "trigger" 操作。
$stateProvider.state('users', {
url: '/users',
controller: 'UsersCtrl',
params: {
obj: null
}
})
function UserCtrl($stateParams,$scope) {
console.log($stateParams);
$stateParams.obj && $stateParams.obj.toggleInfo && $scope.toggleInfo();
}
$state.go('users', {obj:{toggleInfo: true});
有关详细信息,请参阅 UI-Router Wiki - Using Parameters without Specifying Them in State URLs。