Angularjs 角度自定义指令-传递对父函数的引用
我正在将一些代码重构成一个自定义指令,该指令从父范围中获取一个用户列表,并以表格格式显示它们。应用程序用户可以在表中选择一个用户以查看详细信息。Angularjs 角度自定义指令-传递对父函数的引用,angularjs,directive,Angularjs,Directive,我正在将一些代码重构成一个自定义指令,该指令从父范围中获取一个用户列表,并以表格格式显示它们。应用程序用户可以在表中选择一个用户以查看详细信息。users和setUser()函数在父控制器中,而不是在指令控制器中;因此,我将用户传递给指令,并创建对setUser()函数的引用 app.directive('myDirective', function() { return { restrict : 'E', templateUrl : 'app/view.h
users
和setUser()
函数在父控制器中,而不是在指令控制器中;因此,我将用户传递给指令,并创建对setUser()
函数的引用
app.directive('myDirective', function() {
return {
restrict : 'E',
templateUrl : 'app/view.html',
controller : 'ViewController',
scope: {
setUser: '&',
users: '='
}
}
});
这是view.html
的相关代码:
<div ng-repeat="user in users">
<div ng-click="setUser(user)">...</div>
</div>
...
以下是我使用指令的方式:
<my-directive users="users" set-user='setUser()'></my-directive>
<div ng-repeat="user in users">
<div ng-click="doSetUser(user)">...</div>
</div>
问题是,当我单击表中的用户并调用setUser函数时,传递给该函数的用户总是未定义的。我不知道如何解决这个问题。在指令中使用不同的函数:
<my-directive users="users" set-user='setUser()'></my-directive>
<div ng-repeat="user in users">
<div ng-click="doSetUser(user)">...</div>
</div>
这样,您传递给指令的函数将有权访问HTML中的user
变量(从技术上讲,它的范围通过本地user
变量扩展),因此您可以执行以下操作:
<my-directive users="users" set-user='setUser(user)'></my-directive>
我做了一些更改,您可以试试:
app.directive('myDirective',function(){
返回{
限制:'E',
templateUrl:'app/view.html',
控制器:“视图控制器”,
范围:{
setUser:“=”,//已更改“&”->“=”
用户:'='
}
}
});代码>