Javascript 函数(表达式)绑定不起作用
我不明白为什么它不起作用Javascript 函数(表达式)绑定不起作用,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我不明白为什么它不起作用 我试图将一个简单函数从父控制器绑定到子自定义指令。如果我使用&,它不起作用,但是如果我使用=或&绑定提供了一个包装函数来执行表达式。因此,dir.fn()所做的就是获取test属性 说, &or&attr-提供在父作用域上下文中执行表达式的方法。如果未指定属性名,则假定属性名与本地名相同 要使它按预期工作,它应该是 <my-directive fn="main.test()"></my-directive> 我希望这会有所帮助,关键是html
我试图将一个简单函数从父控制器绑定到子自定义指令。如果我使用
&
,它不起作用,但是如果我使用=
或&
绑定提供了一个包装函数来执行表达式。因此,dir.fn()
所做的就是获取test
属性
说,
&or&attr-提供在父作用域上下文中执行表达式的方法。如果未指定属性名,则假定属性名与本地名相同
要使它按预期工作,它应该是
<my-directive fn="main.test()"></my-directive>
我希望这会有所帮助,关键是html中的属性绑定需要括号。我不太清楚为什么会这样;我确信这是一个微妙的角度,我错过了。在纯JS中,我认为myFunction()
是执行函数,而myFunction
是函数引用。你能解释一下吗?这是正确的想法。重要的是上下文main.test()
表达式以未计算的方式传递给&binding,并在每次调用dir.fn()
时进行计算。如果角度表达式中允许使用函数,那么同样的事情也可以通过fn=“function(){return main.test()}”
来完成。
<div ng-app="myApp" ng-controller="mainCtrl as main">
<my-directive fn="main.test"></my-directive>
</div>
<my-directive fn="main.test()"></my-directive>