迁移到最新角度后,我的指令出现问题。
.directive('documentGrid',
function() {
return{
restrict: 'EA',
scope: {
documentData: '=',
remove: '&',
edit: '&',
documentDatasources: '='
},
controller: 'DocumentCrtl',
controllerAs: 'vmDocument',
//bindToController: true,
//transclude: true,
templateUrl: '/Custom/Document/document.cshtml'
};
});
<div class="box" document-grid document-data="widget"
document-datasources="vm.datasource.data"
remove="vm.remove(item)"
edit="vm.openSettings(item,datasources)">
</div>
在移动到最新版本之前,将绑定控制器设置为true可以正常工作,但现在不起作用。所以我删除bindToController:true,我需要使用$ scope从html指令访问我的可变绑定
我阅读了有关指令的指南,文章和教程,但找不到任何解决方案。
最佳答案
尝试替换为:
directive('documentGrid',
function() {
return{
restrict: 'EA',
bindToController: {
documentData: '=',
remove: '&',
edit: '&',
documentDatasources: '='
},
controller: 'DocumentCrtl',
controllerAs: 'vmDocument',
scope: {},
//transclude: true,
templateUrl: '/Custom/Document/document.cshtml'
};
});
请注意,我更改了
bindToController
和scope
。然后,在控制器中,您必须绑定
this
,例如:var vm = this;
最好在控制器的第一行。最终,您将能够像下面这样访问控制器中的数据:
vm.documentData
看到这个小提琴:https://jsfiddle.net/2n5skwqj/794/
在控制器功能中,我记录了名称。