Angularjs UI路由器UI sref或$state.go根本不更改状态。。。无误
更新:Angularjs UI路由器UI sref或$state.go根本不更改状态。。。无误,angularjs,Angularjs,更新: 注意下面的问题仍然是问题所在,但是@SurilD hint允许我看到我得到的实际错误(我不知道为什么默认情况下这是隐藏的!)。我现在越来越紧张了“未知提供程序:SearchControllerProvider如果其他人有类似问题,这确实是我将控制器连接到路由的方式。我不知道哪篇文章推荐使用resolve:对于控制器,但它不需要它。如果您的控制器是以标准方式编写的,它无论如何都会解析字符串名称。因此,状态帮助器现在看起来像 $stateProvider
注意下面的问题仍然是问题所在,但是@SurilD hint允许我看到我得到的实际错误(我不知道为什么默认情况下这是隐藏的!)。我现在越来越紧张了“未知提供程序:SearchControllerProvider如果其他人有类似问题,这确实是我将控制器连接到路由的方式。我不知道哪篇文章推荐使用resolve:对于控制器,但它不需要它。如果您的控制器是以标准方式编写的,它无论如何都会解析字符串名称。因此,状态帮助器现在看起来像
$stateProvider
.state('start', {
url: '/start',
views: {
"navBar": {
templateUrl: "/Navbar/show",
controller: "SearchController",
// resolve: { SearchController: "SearchController" }
},
"mainDiv": {
templateUrl: "/Search/dashboard",
controller: 'SearchController',
// resolve: { SearchController: 'SearchController' }
}
}
})
这很好用
如果有人正在搜索一个问题,您在更改状态时没有收到任何错误,但它不起作用,请遵循@Suril D的链接并添加错误处理,这将使生活变得更加轻松
一如既往,感谢所有的帮助 UI路由器不会抛出错误,所以如果有问题,您不会注意到它。您应该考虑添加一个事件处理程序,用于<代码> $STATEXEXEULL ,如下面所讨论的。如果将状态更改为不存在的状态,则出错。因此,它显然是在寻找国家。。。。但是谢谢你。。。请看一看那篇文章@Suril D我所指的错误不仅仅是因为它找不到状态,而是更一般的错误,这些错误会导致异常,比如试图访问未定义对象的属性。@Suril D!很好,这让我看到了发生的一切。。。将编辑该问题,以了解您是否可以进一步了解路由问题……已弃用
$stateChangeError
事件。现在可以使用$transitions.onError
()
<ul class="sidebar-nav nav-pills nav-stacked" id="menu">
<li id="searchboxmenu" class="searchboxmenu">
<a ui-sref="showresults({ searchcriteia: ''})">
<span class="menuicon fa-stack fa-fw pull-left"><i class="fa fa-bars fa-3x fa-stack-1x "></i></span><span class="menutext">
<div ng-app="OdinSPA" ng-controller="SearchController" class="searchbox input-group">
<input type="text" ng-model="inputcapture" class="input-group form-control restricted" placeholder="Search...">
<span class="input-group-btn">
<button ng-click="search()" class="btn input-group" type="button">
<i class="fa fa-search fa-2w"></i>
</button>
</span>
</div>
</span>
</a>
</li>
<li>
<a ui-sref="start"><span class="menuicon fa-stack fa-fw pull-left"><i class="fa fa-tags fa-3x fa-stack-1x "></i></span><span class="menutext">Orders</span> </a>
</li>
<li>
<a ui-sref="guru"><span class="menuicon fa-stack fa-fw pull-left"><i class="fa fa-database fa-magic fa-3x fa-stack-1x "></i></span><span class="menutext">Guru</span> </a>
</li>
<li>
<a ui-sref="reports"><span class="menuicon fa-stack fa-fw pull-left"><i class="fa fa-files-o fa-3x fa-stack-1x "></i></span><span class="menutext">Reports</span> </a>
</li>
<li>
<a ui-sref="#"><span class="menuicon fa-stack fa-fw pull-left"><i class="fa fa-plus fa-3x fa-stack-1x "></i></span><span class="menutext">New</span> </a>
</li>
</ul>
(function () {
angular.module('OdinSPA')
.config(['$urlRouterProvider', '$stateProvider', '$httpProvider', '$locationProvider', function ($urlRouterProvider, $stateProvider, $httpProvider, $locationProvider) {
$locationProvider.hashPrefix('!').html5Mode(true);
$stateProvider
.state('start', {
url: '/start',
views: {
"navBar": {
templateUrl: '/Navbar/show',
controller: 'SearchController',
resolve: { SearchController: 'SearchController' }
},
"mainDiv": {
templateUrl: '/Search/dashboard',
controller: 'SearchController',
resolve: { SearchController: 'SearchController' }
}
}
})
.state('showresults', {
url: '/Search/ListResults?searchCriteria',
views: {
"navBar": {
templateUrl: function (params) { return '/Search/ListResults?searchCriteria=' + params.searchCriteria; },
controller: 'SearchController',
resolve: { SearchController: 'SearchController' }
},
"mainDiv": {
templateUrl: function (params) { return '/Search/dashboard' },
controller: 'SearchController',
resolve: {
SearchController: 'SearchController',
oneThing: function ($stateParams) {
console.log($stateParams); // comes through fine
var state = this;
console.log(state); // will give you a "raw" state object
}
}
}
}
})
.state('guru', {
url: '/guru',
views: {
"navBar": {
templateUrl: '/Navbar/show',
controller: 'SearchController',
resolve: { SearchController: 'SearchController' }
},
"mainDiv": {
templateUrl: 'Search/reportEdit',
controller: 'SearchController',
resolve: { SearchController: 'SearchController' }
}
}
})
.state('report', {
url: '/guru',
views: {
"navBar": {
templateUrl: '/Navbar/show',
controller: 'SearchController',
resolve: { SearchController: 'SearchController' }
},
"mainDiv": {
templateUrl: '/Search/dashboard',
controller: 'SearchController',
resolve: { SearchController: 'SearchController' }
}
}
})
.state('loginRegister', {
url: '/loginRegister?returnUrl',
views: {
"navBar": {
templateUrl: '/Account/Login',
controller: 'LoginController',
resolve: { LoginController: 'LoginController' }
},
"mainDiv": {
templateUrl: '/Account/Register',
controller: 'RegisterController',
resolve: { RegisterController: 'RegisterController' }
}
}
});
$urlRouterProvider.when('/home', 'start');
$urlRouterProvider.otherwise('start');
$httpProvider.interceptors.push('AuthHttpResponseInterceptor');
}]);
})();
(function () {
angular
.module('OdinSPA')
.controller('SearchController', ['$scope', '$state', '$window', 'SearchService',
function ($scope, $state, $window, SearchService) {
$scope.searchResults = function () {
return "bollocjs";//SearchService.searchResults();
}
$scope.search = function () {
var param = {};
$window.alert($scope.inputcapture);
param.searchCriteria = $scope.inputcapture;
$state.go('showresults', { searchCriteria: param.searchCriteria });
}
$scope.showsearch = false;
}
])
})();
$stateProvider
.state('start', {
url: '/start',
views: {
"navBar": {
templateUrl: "/Navbar/show",
controller: "SearchController",
// resolve: { SearchController: "SearchController" }
},
"mainDiv": {
templateUrl: "/Search/dashboard",
controller: 'SearchController',
// resolve: { SearchController: 'SearchController' }
}
}
})