Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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
Javascript 将ng repeat变量传递到自定义指令_Javascript_Angularjs - Fatal编程技术网

Javascript 将ng repeat变量传递到自定义指令

Javascript 将ng repeat变量传递到自定义指令,javascript,angularjs,Javascript,Angularjs,我有一个ng repeat和一个自定义指令,我试图将ng repeat中的“item”变量传递给它: 如果我使用custom data=“item”则在指令中使用customData 等于字符串“item” 如果我使用customData=“{{item}}”则 指令是项对象和 对其中其他对象的引用将丢失 问题是:我如何将项以对象的形式传递给我的指令?在您的范围分配中将“@”更改为“=”,然后它就可以工作了 angular.module('someModule').directive('c

我有一个ng repeat和一个自定义指令,我试图将ng repeat中的“item”变量传递给它:

  • 如果我使用
    custom data=“item”
    则在指令中使用customData 等于字符串“item”
  • 如果我使用
    customData=“{{item}}”
    则 指令是
    对象和 对其中其他对象的引用将丢失

问题是:我如何将
以对象的形式传递给我的指令?

在您的范围分配中将“@”更改为“=”,然后它就可以工作了

angular.module('someModule').directive('customDirective', function() {
    restrict: 'A',
    scope: {customData: '='},
    link: function(scope) {
       console.log(scope.customData);
    }
});

实际上,您可以像这样在
ng repeat
中使用自定义过滤器

<li ng-repeat="item in list | objectFilter">
   <div custom-directive custom-data="item"></div>
</li>
这样您就可以得到一组新的项目,每个项目现在都格式化为对象

最后,您必须将
'@'
更改为
'='
,然后它就可以正常工作了。
简单地将
'
更改为
'=
'并不能如您所愿工作。

'
更改为
'='
是的,解决了:D谢谢
angular.module('someModule').directive('customDirective', function() {
    restrict: 'A',
    scope: {customData: '='},
    link: function(scope) {
       console.log(scope.customData);
    }
});
<li ng-repeat="item in list | objectFilter">
   <div custom-directive custom-data="item"></div>
</li>
'use strict';
filters.filter("objectFilter",function(){
    return function(input){
        angular.forEach(input,function(key,val){
            if(typeof input[val].item == "string"){
                input[val].item = JSON.parse(input[val].item);
            }
        })
        return input;
    }
});