我希望能够重复使用我的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(使用前将#替换为@)