我在指令中传递了一个变量col
定义col: '='
的指令。
该对象包含一些数组,在这些数组中有一个函数。
该函数指的是来自我的控制器的变量,它看起来像这样:
function (params) {
return $scope.function(params);
}
这个col
变量被传递给big指令包含的子指令,子指令执行它。
它会从名为 VM {random number here} 的文件中抛出错误,其中$scope
未定义。
如何让它从我的控制器运行,而不是从虚拟JS文件运行?
答案 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>
我希望这会对你有所帮助