ui-router需要多个兄弟视图

时间:2016-01-13 09:38:31

标签: angularjs angular-ui-router

如何

我正在处理一个比平时更复杂但形式更复杂的应用程序。我通过使用不同的视图和控制器将其拆分,但仍然将它们保存在表单元素中。

它有不同的部分,但请求的有效负载应该包含我执行POST请求时的所有信息。所以基本上这就是为什么它有一个主要形式(好吧,不是把它放在一个表单中,我甚至可以没有表单然后收集模型并通过包含所有模型提交它&#) 39; s数据分为一个主要部分)。

问题

我的问题是:

  • ui-router是否有一种required字段要设置?只是为了拥有所需的控制器的功能和范围。
  • 有谁知道更好的解决方案?

代码

代码只是一个例子,这不是字面上的代码。

查看(sectionMain.html)

<form>
    <div ui-view="section1"></div>
    <div ui-view="section2"></div>
    <div ui-view="section3"></div>

    <button type="submit">Submit</button>
</form>    

州定义

$stateProvider.state('myState', {
        url: '/mstate',
        parent: 'stateForAuthenticatedUsers',
        views: {
            //this will be loaded what I have above. Just a part of the page.
            'content': {
                templateUrl: 'modules/myModule/views/sectionMain.html',
                controller: 'Section1Ctrl as vm'
            },
            'section1@myState': {
                templateUrl: 'modules/myModule/views/section1.html',
                controller: 'Section1Ctrl as vmState1'
            },
            'section2@myState': {
                templateUrl: 'modules/myModule/views/section2.html',
                controller: 'Section2Ctrl as vmState2'
            },
            'section3@myState': {
                templateUrl: 'modules/myModule/views/section3.html',
                controller: 'Section3Ctrl as vmState3'
            },
        }
    });

控制器(例如State2Ctrl)

function State2Ctrl($scope) {
    //stuffs here. Need to refer parent's scope somehow
    $scope.vm.someVariableOrObject
}

我的关注

我唯一担心的是,相信在状态配置中定义的值vm并不能让我感觉它是一个组合良好的结构。我真的需要一些我可以要求的东西,明确地拥有它而不是盲目地信任一个值vm。 我的观点也包含vm.someVariable,以便引用父母的范围。但我不喜欢它。

1 个答案:

答案 0 :(得分:0)

为什么不简单地使用您的$rootScope?一种简单的方法来实现您的目标,而不是每次都传递$scope