我正在尝试在单击按钮时加载新视图。由于某种原因,它不适用于我的一条路径。它将与路径/查找一起使用并将转到查找页面,但是当我将路径更改为/ search时它什么都不做?我糊涂了。
这是我的控制器:
(function () {
'use strict'
angular
.module('crm.ma')
.controller('navbarCtrl', function ($location) {
var vm = this;
vm.redirect = function () {
$location.url('/search');
}
});
})();
这是我的按钮
<button class="btn default-btn advancedbtn" ng-click="redirect()">Advanced</button>
这是我的路线文件的一部分,如果这将有所帮助。
.state('index.topnavbar', {
url: '/topnav',
templateUrl: 'app/components/common/topnavbar.html',
controller: 'navbarCtrl as vm'
})
.state('index.search', {
url: '/search',
templateUrl: 'app/components/common/topnav_advancedmodal.html',
controller: 'AdvancedSearchCtrl as vm',
data: {
pageTitle: 'Advanced Search'
}
})
如果需要任何其他代码,请告诉我。感谢。
答案 0 :(得分:3)
你在控制台中有任何错误吗?你的模板是否存在?如果Angular找不到您的模板,它将不会转换到该路线。您可以检查网络请求和控制台是否有错误。
您可以尝试使用ui-sref
:
<a ui-sref="index.search">Advanced</a>
如果您希望保留重定向方法,可以添加console.log
并看到该日志吗?如果没有,那么你的范围是关闭的。
如果是这样,并且您希望保留redirect
方法,而不是使用ui-sref
(如果您想在重定向之前检查某些内容),可以将$state
注入您的控制器,打电话给方法:
$state.go('index.search');
根据UI-Router documentation,如果您已经在那里点击一下,为了帮助解决重新加载的后续问题,您可以指定重新加载的选项,如下所示:
<a ui-sref="index.search" ui-sref-opts="{ reload: true }">Advanced</a>
答案 1 :(得分:0)
您对重定向方法的调用不在范围内。您必须在html中将redirect()
更改为vm.redirect()
。
之前:
<button class="btn default-btn advancedbtn" ng-click="redirect()">Advanced</button>
后:
<button class="btn default-btn advancedbtn" ng-click="vm.redirect()">Advanced</button>
答案 2 :(得分:0)
这可能会对你有所帮助 使用某个名称为控制器设置别名时,需要在视图中使用aliasName 改变你的代码
Q