1

迁移到最新的角度后,我的指令有问题。

.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 指令访问我的变量绑定

我阅读了有关指令的指南、帖子和教程,但没有找到任何解决方案。

4

1 回答 1

1

尝试用这个替换:

directive('documentGrid',
    function() {
        return{
            restrict: 'EA',
            bindToController: {
                documentData: '=',
                remove: '&',
                edit: '&',
                documentDatasources: '='
            },
            controller: 'DocumentCrtl',
            controllerAs: 'vmDocument',
            scope: {},
            //transclude: true,
            templateUrl: '/Custom/Document/document.cshtml'
        };
    });

请注意,我更改了bindToControllerscope

然后在您的控制器中,您必须绑定this,例如:var vm = this;最好在控制器的第一行。

最后,您将能够像这样访问控制器中的数据:

vm.documentData

看到这个小提琴:https ://jsfiddle.net/2n5skwqj/794/ 在控制器函数中我记录了名称。

于 2017-03-07T16:16:37.193 回答