【发布时间】:2016-03-17 18:14:35
【问题描述】:
我正在尝试使用name 属性为我的指令动态设置控制器。到目前为止,这是我的代码。
html
<view-edit controller-name="vm.controller" view="home/views/med.search.results.detail.resources.audios.html" edit="home/views/med.media.resources.edit.html"></view-edit>
js
export default class SearchResultsCtrl extends Pageable {
/*@ngInject*/
constructor($injector, $state, api) {
super(
{
injector: $injector,
endpoint: 'mediaMaterialsList',
selectable:{
itemKey: 'cid',
enabled:true,
params: $state.params
},
executeGet: false
}
);
this.controller = SearchResultsResourcesAudiosCtrl;
}
}
指令
export default class ViewEditDirective {
constructor() {
this.restrict = 'E';
this.replace = true;
this.templateUrl = 'home/views/med.view.edit.html';
this.scope = {};
this.controller = "@";
this.name = "controllerName";
this.bindToController = {
'view': '@?',
'edit': '@?'
};
this.open = false;
this.controllerAs = 'ctrl';
}
}
我得到undefined 为vm.controller。我猜它是在控制器将控制器分配给变量之前渲染的(我调试了它,它在变量中设置了控制器)。
我正在遵循这个答案来实现这一目标,但到目前为止还没有运气。 How to set the dynamic controller for directives?
谢谢。
【问题讨论】:
标签: javascript angularjs angularjs-directive ecmascript-6