Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 活页夹控制器角度1.6_Javascript_Angularjs_Angularjs 1.6 - Fatal编程技术网

Javascript 活页夹控制器角度1.6

Javascript 活页夹控制器角度1.6,javascript,angularjs,angularjs-1.6,Javascript,Angularjs,Angularjs 1.6,在迁移到最新角度后,我的指令有问题 .directive('documentGrid', function() { return{ restrict: 'EA', scope: { documentData: '=', remove: '&', edit: '&', document

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

.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>
指令('documentGrid', 函数(){ 返回{ 限制:“EA”, 范围:{ documentData:“=”, 删除:“&”, 编辑:“&”, documentDatasources:“=” }, 控制器:“DocumentCrtl”, controllerAs:“vmDocument”, //bindToController:对, //是的, templateUrl:“/Custom/Document/Document.cshtml” }; }); 在移动到最新版本之前,它可以在绑定控制器设置为true的情况下正常工作,但现在它不工作。因此,我删除了bindToController:true,并且我需要使用$scope来访问我的VaribileBindfromHTML指令


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

尝试用以下内容替换:

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
看这把小提琴:
在控制器功能中,我记录了名称。

我正在使用Angular 1.6和
bindToController
对每个
组件
指令
进行操作,没有遇到任何问题。您是否在控制台中收到任何错误消息?错误或问题是什么?我没有控制台错误,但如果我写入vmDocument.documentData(bindToController=true)未定义,但如果我写入$scope.documentData,则我的对象绑定来自call stackvm!=vmDocumentok。所以当我把指令放在页面上时,使用如下代码。。。documentdatasources=“vm.datasource.data”。我假设在我的控制器绑定到我的指令时,我可以通过vmDocument访问documentDatasources。documentDatasources?小提琴使用Angular 1.4.3,因此可能不是有效的测试。因此,除非我将
$scope
注入我的命名控制器(
只是一个没有传入数据的空控制器)并将
范围
属性设置为与控制器定义中的
bindToController
属性相同。似乎在指令定义中:1)
scope
正在处理传递给指令的数据;2)
bindToController
处理将
scope
数据传递给控制器的过程;3)
controllerAs
确定模板如何访问范围数据。