我想要做的是在搜索 Controller 中,一旦我从服务器($http)返回搜索结果,请将 View 更改为不同的 View - 搜索结果 View 。我不确定我正在采用的方法是否正确,但无论如何它似乎都不起作用。我还需要传递响应,以便新 View 可以显示结果/响应。
我的app.js:
.....state('tab.search', {
url: '/search',
views: {
'tab-search': {
templateUrl: 'templates/tab-search.html',
controller: 'SearchCtrl as search'
}
}
})
.state('tab.search-results', {
url: '/results',
views: {
'tab-search-results': {
templateUrl: 'templates/tab-search-results.html',
controller: 'SearchResultsCtrl as searchResults'
}
}
})
然后我的搜索 Controller 有:
.controller('SearchCtrl', function($scope, $state, $location, $ionicPopup, service) {
....
$scope.doSearch = function(state) {
.....
var result = service.doSearch(dataObj);
result.then(function(response) {
console.log("I'm here");
$state.go('tab.search-results');
......
我的搜索结果 View (tab-search-results.html)目前具有以下基本代码:
<ion-view view-title="Search Results">
<ion-content padding="true">
hello world
</ion-content>
</ion-view>
这个基本结构也是我所有其他页面/ View 的设置方式。
当我执行搜索时,会输出控制台消息,然后 URL 根据 tab.search-results 状态更改为/results,但模板/ View 不会t 更改/显示。
有趣的是,如果我更改 $state.go('tab.search-results');指向我知道有效的另一个应用程序状态/ View ,它工作得很好 - 但无论出于何种原因,这个状态/ View 都不起作用。
此外,如果有更好的方法来实现同样的目标,请告诉我。我最终需要将“响应”从 SearchCtrl 传递到 SearchResultsCtrl - 或者以一种或另一种形式在搜索结果页面上访问它。
非常感谢。
最佳答案
我认为您正在寻找$stateParams
。
var result = service.doSearch(dataObj);
result.then(function(response) {
$state.go('tab.search-results', {'searchData':response});
}
在您的routes
文件中:
.state('tab.search-results', {
url: '/results/:searchData',
views: {
'tab-search-results': {
templateUrl: 'templates/tab-search-results.html',
controller: 'SearchResultsCtrl as searchResults'
}
}
})
并在您的SearchResultsCtrl
中:
.controller($stateParams) {
console.log($stateParams.searchData) // will give you search results
}
注意:如果您不想通过 URL 传递数据,可以在 .state()
方法中使用 params
键.
.state('tab.search-results', {
url: '/results',
params: {
'searchData':null
},
views: {
'tab-search-results': {
templateUrl: 'templates/tab-search-results.html',
controller: 'SearchResultsCtrl as searchResults'
}
}
})
关于javascript - AngularJS( ionic 框架)-更改 Controller 内的状态似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31933212/