重用需要“resolve”参数的“ui-route”控制器

2024-01-26

我希望能够重复使用我的ui-router- 有线控制器。他们目前从以下位置接收参数ui-router resolve渲染他们的模板。我可以重复使用这些控制器吗?ui-router?

例如,我这样做ui-router:

.controller('DetailController', function ($scope, detailData) {
    $scope.controllerDetail = detailData + "is awesome!";
})
.config(function ($stateprovider) {
    $stateprovider.state('detailState', {
        resolve: {
            detailData: function () { return "John Doe"; }
        },
        template: '<p>{{ controllerDetail }}</p>',
        controller: 'DetailController'
    }
}

现在,我想使用相同的控制器在其他地方渲染固定的子面板。例如:

<master ng-init='childData="Jane Smith"'>
    <detail ng-controller='DetailController' ng-controller-params="{ detailData : childData">
        <p>{{ controllerDetail }}</p>
    </detail>
</master>

当然,在实践中,实际上存在模板文件,并且控制器中的一些功能值得去重。另外,resolve第一个示例中的数据和init第二个示例中的数据均通过线路到达,但在第二个示例中,它作为较大请求的子对象而不是单独导航的项目到达。另外,我在指令中分配控制器,而不是通过 HTML 属性。


就我而言,这是一个类似但有限的子案例,我有多个ui-router路线与resolve()定义,并且只有一处通过在模板中实例化控制器ng-controller,在这种情况下传递给控制器​​的值是已知的恒定值。

在这种情况下,你可以简单地做

.value('detailData', 'here goes the default/fallback value')

如果您有多种用途ng-controller应该有不同的detailData,显然你需要找到更好的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重用需要“resolve”参数的“ui-route”控制器 的相关文章

随机推荐