从控制器内调用angularjs ui-router状态
|
我使用
angularjs ui-router来建立应用程序中的各种状态.虽然我知道我可以从html中的链接(通过ui-sref)进入状态,是否可以从控制器内进入状态?
下面的代码片段是一个简单的angularjs应用程序,以帮助说明我的观点. 在下面的示例中,我有两种状态: >有一个名为home的状态,它是一个简单的表单,包含一个文本输入字段和一个调用控制器中的搜索功能的按钮. 首先是模块的启动. var app = angular.module('example',[
'ui.router'
]);
下面是前面解释的ui路由状态的配置. app.config(
function($stateProvider,$urlRouterProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider.
state('home',{
url: '/',template: '<input ng-model="text" type="text" placeholder="Query Text">' +
'<button type="button" ng-click="search()">Search</button>',controller: 'SearchFormController'
}).
state('search',{
url: '/search?text',template: '<pre>{{results | json}}</pre>',controller: 'SearchController'
});
});
SearchFormController控制搜索的表单输入.该控制器只是将表单输入转发到搜索状态.是否可以引用搜索状态而不是构造URL并调用$location.path? app.controller('SearchFormController',function($scope,$location) {
$scope.text = '';
$scope.search = function() {
// Can I use the 'search' state here instead of
// constructing a url and calling $location.path?
$location.path('/search?text='+ encodeURIComponent($scope.text));
};
});
搜索的控制器SearchController看起来如下所示.它需要stateParams(即查询参数)才能发出$http调用. app.controller('SearchController',$stateParams,$http) {
$scope.results = [];
asUrl = function(resourceUrl,queryParams) {
// do stuff and return http url
};
$http.get(asUrl("/someServiceUrl/search",$stateParams))
.success(function(data,status) {
$scope.results = data;
})
.error(function(data,status) {
// display an error message
});
});
同样,在SearchFormController中,是否可以通过名称从配置中引用搜索状态?例如,在html页面中,我可以有这样的链接:< a ui-sref =“search({text:Foo})”>搜索text = Foo< / a>其中搜索状态由name引用并传入参数.是否可以从控制器调用类似的东西(通过名称,传入参数)? 解决方法
是的,检查doc:
http://angular-ui.github.io/ui-router/site/#/api/ui.router.state. $state for $state.go(stateName,params,options)
go(to,options)
我们可以使用许多设置,但所有设置都在上面的doc linke中明确定义 也可能很有趣: Difference between ui-sref and $state.go in AngularJS UI-Router (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
