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

时间:2016-04-24 14:20:56

标签: javascript angularjs

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

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

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

它会从名为 VM {random number here} 的文件中抛出错误,其中$scope未定义。

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

2 个答案:

答案 0 :(得分:1)

如果你需要传递功能,那么你必须为job创建服务/工厂。我想在指令或组件中使用。

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

如果全局意味着窗口变量或函数不需要只注入this.windows。 ....完成工作。

问候。

答案 1 :(得分:0)

在您为控制器声明的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>

我希望这会对你有所帮助