AngularJS在单个状态下为多个视图使用相同的控制器

时间:2016-10-05 11:30:31

标签: javascript angularjs angularjs-scope angular-ui-router

我正在使用angular 1.5和UI路线。

由于结构限制,我们在单个状态下加载过滤视图和内容视图(主要用于数据集显示)。

我正在尝试为多个视图实现单一范围,这意味着: 我希望我的过滤器视图能够在内容视图中从加载的控制器触发函数。

我的州减速看起来像这样:

.state('somestate', {
    url: '/somestate',
    views : {
        "content" : {
            templateUrl: 'dataset.html',
            controller: "someController"
        },
        "filters" : {
            templateUrl: 'filters.html',
        }

    }

})

我希望能够触发filters.html中的函数,类似这样的

<div ng-click="doSomething()"></div>

考虑在someController中进行的doSomething()减速

2 个答案:

答案 0 :(得分:1)

我不确定你的问题是什么...... 如果你想使用同一个控制器,那就去做吧......

这样:

.state('somestate', {
    url: '/somestate',
    views : {
        "content" : {
            templateUrl: 'dataset.html',
            controller: "someController"
        },
        "filters" : {
            templateUrl: 'filters.html',
            controller: "someController"
        }

    }

})

或在模板文件中使用ng-controller

答案 1 :(得分:0)

使用“controller as”语法。

如果声明控制器处于以下状态:

controller: 'SomeController`,
controllerAs: 'some'

如果在html标签内:
ng-controller="SomeController as some"

然后在模板中,您可以访问控制器的范围some.someFunc()