Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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
Angularjs 角度自定义指令-传递对父函数的引用_Angularjs_Directive - Fatal编程技术网

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:“=”,//已更改“&”->“=”
用户:'='
}
}
});