【问题标题】:How to make a generic close button for angular ui-views?如何为角度 ui 视图制作通用关闭按钮?
【发布时间】:2017-07-13 13:27:01
【问题描述】:

我需要一个函数,我可以使用 $window.history.back() 从每个视图中调用,而不管哪个控制器控制该页面。

.run(['$rootScope', '$state', 'CommonUserModel', 'InitialiseService','$window', function($rootScope, $state, $window, commonUserModel, initialiseService) {

    $rootScope.link = function(){
        $window.history.back();
    };

所以我把这个函数放在了应用模块中。注入窗口对象,因为它抱怨它。但现在它也抱怨它“无法读取未定义的属性'back'”。

当我阅读 StackOverflow 时,我正在使用来自其他控制器的 $rootScope 调用此函数。我不得不像这样将 $rootScope 注入其他控制器。

homeViewModule.controller("simDetailsController", [ '$rootScope','$scope', 'ModalDialogService', 'CommonTagModel', '$location','$window',
                                        function($scope, modalDialogService, commonTagModel, $location, $window,$rootScope) { 
self.link = function(){
   $rootScope.link();};

你能给我一个建议吗? 请记住,我是 AngularJS 的新手,我仍然没有得到这个凌乱、复杂的框架。

【问题讨论】:

    标签: angularjs ng-view angularjs-rootscope


    【解决方案1】:

    您在参数列表中注入$window & $rootScope 的顺序与字符串数组列表不匹配。
    您提到'$window' 是字符串数组中的第 5 个元素,而它是参数列表中的第 3 个元素。
    此外,在您的代码中,'$rootScope' 是字符串数组中的第 1 个元素,而它是参数列表中的第 6 个元素。

    将您的代码 sn-ps 中的第一行替换为:

    .run(['$rootScope', '$state', 'CommonUserModel', 'InitialiseService','$window', function($rootScope, $state, commonUserModel, initialiseService, $window) {

    homeViewModule.controller("simDetailsController", [ '$rootScope','$scope', 'ModalDialogService', 'CommonTagModel', '$location','$window', function($rootScope, $scope, modalDialogService, commonTagModel, $location, $window) {

    【讨论】:

    • 其实你是对的,应用模块列表中存在问题。但不在控制器中。实际上,在控制器中,我是否必须再次进行窗口注入?这是遗留代码,因为在我注入它并将相同的功能放入每个控制器之前,这就是为什么我认为必须有更好的方法。
    • 完美运行。在一个控制器中,我只注入了 $rootScope;另一方面,我同时做了 $rootScope 和 $window。所以两者都在工作意味着我真的不需要控制器中的窗口。节省了我的打字时间。
    【解决方案2】:

    你应该使用路线:

    https://docs.angularjs.org/api/ngRoute/service/$route

    【讨论】:

    • 我们使用 ui.router (ui-view) 代替路由。但我们可以审查它。我仍然没有看到任何关于如何为这些视图制作关闭按钮的信息。你的意思是我应该每次都写一个href来关闭按钮?
    • setTimeout(function() { $window.history.back(); },100);
    猜你喜欢
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 2020-04-23
    相关资源
    最近更新 更多