gpt4 book ai didi

javascript - 重用需要 `ui-route` d 参数的 `resolve` Controller

转载 作者:行者123 更新时间:2023-11-29 15:36:02 25 4
gpt4 key购买 nike

我希望能够重用我的 ui-router 有线 Controller 。他们目前从 ui-router resolve 接收参数来呈现他们的模板。我可以在没有 ui-router 的情况下重用这些 Controller 吗?

例如,我使用 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'
}
}

现在,我想使用同一个 Controller 在别处渲染一个固定的子面板。例如:

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

当然,在实践中,实际上是有模板文件的, Controller 中的一些功能值得去重。此外,第一个示例中的 resolve 数据和第二个示例中的 init 数据都通过网络到达,但在第二个示例中,它作为一个更大的对象的子对象到达请求而不是单独导航的项目。此外,我在指令中而不是通过 HTML 属性分配我的 Controller 。

最佳答案

在我的例子中,这是一个类似但有限的子案例,我有多个 ui-router 路由定义了 resolve(),并且 一个地方 Controller 通过 ng-controller 在模板中实例化,在这种情况下传递给 Controller ​​的值是一个已知的常量值。

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

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

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

关于javascript - 重用需要 `ui-route` d 参数的 `resolve` Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29023440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com