我有一个带有搜索按钮的文本框,如下所示
单击搜索按钮,我调用SearchController.search方法和 我的期望是它会显示一个包含结果的新页面。
$scope.search = function () {
$http.get('data/results.json').success(function (data) {
$scope.activities = data;
$state.go('results',data);
});
我的app.js如下所示
var myApp = angular.module('MyApp', ['ui.router']);
myApp.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('results', {
url: '/results',
templateUrl: 'result.html',
controller: 'SearchController'
});
$urlRouterProvider.otherwise('/');
});
但是当我点击搜索按钮时,没有任何反应,网址只会更改为l /#/ results。
我在搜索页面中没有任何ui-view,我想去结果页面显示结果。如何解决这个问题?我在做什么错误?
答案 0 :(得分:1)
您无法将未映射的对象发送到$ state.go。
查看API:http://angular-ui.github.io/ui-router/site/#/api/ui.router.state。$ state
另一个类似问题:AngularJS: Pass an object into a state using ui-router
答案 1 :(得分:0)
如果要在不同的页面上显示它,请使用html上的“ui-sref”导航到新页面并在页面上调用ng-init,例如
<button type="button" ui-sref="results">
在result.html上,您可以在父节点上调用init,例如
<section ng-init="search()">
.....
....
</section>
你的控制器现在看起来像这样
$scope.search = function () {
$http.get('data/results.json').success(function (data) {
$scope.activities = data;
});
答案 2 :(得分:0)
使用ui-router,会发生状态更改,并根据状态显示不同的视图。因此,当使用ui-router时,从一个页面移动到另一个页面是错误的看法。我们从一个状态移动到另一个状态,因此可以使用&#34; services&#34;来完成参数传递。