我不明白为什么这件事不工作。
我正在尝试将一个简单的函数从父控制器绑定到一个子自定义指令。如果我使用&,它就不能工作,但是如果我使用=或<,它就能正常工作。我知道这是一种糟糕的实践,但为什么它有效,而&却不行呢?也许我错过了一些很简单的东西?
下面是剧本:
JS
var app = angular.module('myApp',['ngMaterial']);
app.controller('mainCtrl',mainCtrl);
function mainCtrl(){
var main = this;
main.test = function(){console.log("test")};
}
app.directive('myDirective',myDirective);
function myDirective(){
return {
scope: {},
controller: myCtrl,
controllerAs: "dir",
bindToController: {
//fn: '&' //This doesn't work
fn: '<' // This works
},
template: '<md-button ng-click="dir.fn()" class="md-raised">click</md-button>'
};
function myCtrl(){
}
}HTML
<div ng-app="myApp" ng-controller="mainCtrl as main">
<my-directive fn="main.test"></my-directive>
</div>发布于 2017-04-19 13:57:45
&绑定提供了一个包装器函数来执行表达式。所以,dir.fn()所做的就是获取test属性。
文献资料说,
& or &attr -提供了在父作用域上下文中执行表达式的方法。如果未指定attr名称,则假定属性名与本地名称相同。
要使它按预期工作,它应该是
<my-directive fn="main.test()"></my-directive>https://stackoverflow.com/questions/43496606
复制相似问题