gpt4 book ai didi

javascript - AngularJS( ionic 框架)-更改 Controller 内的状态似乎不起作用

转载 作者:行者123 更新时间:2023-11-28 19:04:44 25 4
gpt4 key购买 nike

我想要做的是在搜索 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com