angularjs - 在模态和 ui View 中运行 ui.router

标签 angularjs angular-ui-router

所以不确定 ui.router 是否可行,但我想我会添加一个漂亮的小模式,启动并表示欢迎访问该站点,让用户有机会输入一些详细信息等等。

设置是基本 View 有两个 ui View (mainview 和 menuview),我在模态中添加了 formview。我可以让它工作,这样当模式打开时它会加载 formview

        .state('form-welcome', {
        views: {
            formview:
                {
                    templateUrl: "/modals/form-welcome",
                },

        },
        //parent:"index"
    })

实际上并不认为它会那么容易工作,但确实如此,问题是一旦加载,它就会重置 mainview 和 menuview(因为它是模式,这意味着背景变灰)。

我试图让 form-welcome 成为 index 的子元素(初始 View ),但是,这破坏了整个事情。 (索引看起来如下)

    .state('index', {
        url:"/int/index",
        views: {
            mainview: {
                templateUrl: "/pages/index",
                controller: "sketchMagController"
            },
            menuview: {templateUrl: "/pages/top-menu"},

        },

    })

我可以重新加载所有三个 View (mainview、menuview 和 formview),除了闪烁的屏幕外还不错。但是有没有一种方法可以限制状态,以便它只更改 formview 而不影响其他的。 原因是我想通过五个不同的屏幕来改变formview,讨厌闪烁的页面:)

在我看来这应该是可能的,但我可能误解了它是如何工作的

最佳答案

UI-router 用于更改应用程序状态,而不是将 View 嵌套在一起。为此,你有 angular#component。

var app = angular.module('app', []);  
app.component('myModal', {
   template: '<div ng-show="isShowing">Hello User</div>',
   controller: 'modalCtrl'
});

app.controller('modalCtrl', ['$scope', 'modalService', function($scope, modalService) {
   //Save showing state in a service (default to false) so you don't popup your modal everytime user visit homepage
   $scope.isShowing = modalService.getShowStatus();
   $scope.pressButton = function() {
      $scope.isShowing = false;
      modalService.setShowStatus(false);
   }
});

然后使用ui-router,声明你的索引状态,其模板如下

<-- INDEX.HTML -->
<my-modal></my-modal>
<div ui-view='mainview'></div>
<div ui-view='menuview'></div>

ui-router 的强大之处在于能够在每个不同的状态下用不同的模板替换ui-views

stateIndex: abstract
stateIndex.stateA: mainview: /home.html
stateIndex.stateB: mainview: /information.html

那么问问你自己,menuview 会在未来的状态下改变为不同的模板吗?如果没有,将其作为一个组件。

关于angularjs - 在模态和 ui View 中运行 ui.router,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39023597/

相关文章:

javascript - 在 angular-js 应用程序中使用 Google 跟踪代码管理器 'click-listener' 时,“无法对数据层进行字符串化”

javascript - 使用 ng-repeat 选择选项,如果分配的值为 Number ,Angular 1.6,则不选择

javascript - 无法在 Angular ui.router 中的子状态之间切换

javascript - Angular JS UI 路由器不工作

angularjs - angular beforeEach 注入(inject)导致简单测试失败

javascript - Angular 模块注入(inject)错误

javascript - 错误 : [$controller:ctrlreg] after declaring controller?

javascript - 如何将 $stateParams 从 ui-router 传递到 resolve 服务?

javascript - Angularjs 中的受限 URL ui.router

javascript - url 中没有哈希字符的情况下,Angular2 的 spa 路由如何工作?