将对象传递给指令不允许全局变量

Passing object to directive does not allow global variables

本文关键字:指令 不允许 全局变量 对象      更新时间:2023-09-26

我将一个变量传递给我的指令,col指令中col: '='定义的变量。该对象包含一些数组,在这些数组中有一个函数。该函数引用我的控制器中的一个变量,它看起来像这样:

function (params) {
    return $scope.function(params);
}

这个col变量被传递给 big 指令包含的子指令,子指令执行它。

它从一个名为 VM{随机数} 的文件中抛出一个错误,其中它说$scope未定义。

如何让它从我的控制器运行,而不是从虚拟 JS 文件运行?

如果需要传递功能,则必须为作业创建服务/工厂。我认为要在指令或组件中使用。

不要忘记服务是单例的,工厂实施标准工厂模式。

如果全局意味着窗口变量或函数不需要注入这个.windows。做这项工作。

问候。

在为

控制器
声明的 HTML 模板中调用指令只需将数据从指令传递到控制器
中使用的函数以便您可以在控制器的同一呈现模板上访问指令数据

命令

.directive('myDir', function () {
   return {
     'restrict': 'AE',
     'templateUrl': '/directive_page.html',
         'scope': {
           'col': '=',
           'onSelect': '='
         }
   }
   'link': function () {
       // use onselect method here to use values
   }
}

控制器

.controller('myController', function () {
    $scope.setValueFromDirective = function (value) {
       // write your logic to fetch data
    };
});

.HTML

<div data-my-dir="" col="//pass value you want in directive" data-on-select='setValueFromDirective(value)'>
</div>

我希望这对你有帮助