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;)固定的。不,原稿中没有遗漏