AngularJS重定向到按钮单击时查看

时间:2015-11-06 15:00:23

标签: angularjs

我正在尝试在单击按钮时加载新视图。由于某种原因,它不适用于我的一条路径。它将与路径/查找一起使用并将转到查找页面,但是当我将路径更改为/ 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'
            }

        })

如果需要任何其他代码,请告诉我。感谢。

3 个答案:

答案 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

参考:https://docs.angularjs.org/api/ng/directive/ngController