Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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 AngularJS指令-什么是;范围:{}";什么意思?_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript AngularJS指令-什么是;范围:{}";什么意思?

Javascript AngularJS指令-什么是;范围:{}";什么意思?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,看看我的指令中的这个代码片段 return { controller: 'MyController', controllerAs: 'vm', scope: {}, bindToController: { name: '=', id: '=' }, // .... 然后,在我看来,我可以使用: <div>{{ vm.name }}</div> {{vm.name} 我的问题是:为什么我们

看看我的指令中的这个代码片段

return {
    controller: 'MyController',
    controllerAs: 'vm',
    scope: {},
    bindToController: {
        name: '=',
        id: '='
    },
    // ....
然后,在我看来,我可以使用:

<div>{{ vm.name }}</div>
{{vm.name}
我的问题是:为什么我们首先需要设置
范围:{}
?如果我删除,代码就会中断


注意:如果您想知道为什么我将绑定放在
bindToController
而不是
scope
,我是从这篇文章()中得到这个想法的。

默认情况下,除非显式设置,否则指令不会创建自己的作用域。这会对你有更多帮助。

谢谢@mic4eal。刚刚看到你的编辑。我去查一下link@Ricky,如果您想了解更多信息,请阅读本文提供的信息,谢谢@mic4eal;我现在更清楚了。基于此,
scope:{}
似乎是更干净的方法,因为它不与父变量耦合,因此不依赖于父变量。这是正确的吗?我想如果一个指令总是与父指令一起使用,那么
scope:true
就可以工作了。。。但这似乎与“无耦合”范式背道而驰,这取决于您是否希望能够从父范围访问变量。简单地说,如果你想继承父变量。你使用的是哪个版本。它应该是angular 1.4+@PankajParkar:Yup,这是正确的。我假设我的解决方案不会与1.3.x一起工作?在1.3中正确,它只是
bindToController:true
只是一个提示:上面的代码在
controllerAs:'vm'
后面缺少一个逗号。如果您的代码库中也存在此问题,您也需要在那里进行修复。谢谢@Aaron;)固定的。不,原稿中没有遗漏