ng-repeat和ng-click中的角度表达

时间:2016-09-03 09:42:22

标签: angularjs

我正在尝试使用由ng-click动态生成的ng-repeat调用函数,问题是我无法获取ng-click函数中传递的参数值。我的HTML代码是

<div class="col-md-4 col-xs-12 col-lg-4" ng-repeat="(key, value) in uploadedFiles">
    <b>value.filename is {{value.filename}}</b>
    <img ng-if="value.filetype=='jpg'" ng-src="http://localhost:3000/uploads/{{value.filename}}" class="img img-responsive thumbnail uploadedfile-thumb"/>
    <img ng-if="value.filetype=='PDF'" ng-src="images/pdf-thumb.jpg" class="img img-responsive thumbnail uploadedfile-thumb"/>
    <a ng-href="http://localhost:3000/uploads/{{value.filename}}" target="_blank" class="uploaded-file-links">View</a>
    <a ng-href="#" ng-click="deleteFile(value.filename);" class="uploaded-file-links">Delete</a>
</div>

我没有得到deleteFile()传递的文件名,它在第二行的<b>标签中工作,所以最后这是我的角度表达式的问题所以我应该怎么写呢?

1 个答案:

答案 0 :(得分:0)

我会尝试在这里做一些猜测。

我认为你的uploadedFiles是一个目标数组,而不是一个对象本身。在这种情况下,您应该使用ng-repeat="file in uploadedFiles"来迭代数组元素。这将迭代您的数组并将该迭代的相应对象赋值给file变量。

ng-repeat="(key, value) in uploadedFiles"用于迭代对象属性而不是迭代数组元素。例如,如果uploadedFiles是:

var uploadedFiles = {
    prop1: 'value1',
    prop2: 'value2',
    prop3: 'value3'
};

你会像这样迭代它:

<ul>
    <li ng-repeat="(key, value) in uploadedFiles">
        {{value}}
    </li>
</ul>

您将获得以下输出:

  • 值1
  • 值2
  • 值3

但如果uploadedFiles是一个像这样的数组:

var uploadedFiles = [
    {
        prop1: 'value11',
        prop2: 'value12',
    },
    {
        prop1: 'value21',
        prop2: 'value22',
    },
    {
        prop1: 'value31',
        prop2: 'value32',
    }
];

你按照这样迭代:

<ul>
    <li ng-repeat="file in uploadedFiles">
        {{file.prop1}}
    </li>
</ul>
你会得到:

  • value11
  • value21
  • value31

所以在你的情况下,我会尝试以下方法:

<div class="col-md-4 col-xs-12 col-lg-4" ng-repeat="file in uploadedFiles">
    <b>file.filename is {{file.filename}}</b>
    <img ng-if="file.filetype=='jpg'" ng-src="http://localhost:3000/uploads/{{file.filename}}" class="img img-responsive thumbnail uploadedfile-thumb"/>
    <img ng-if="file.filetype=='PDF'" ng-src="images/pdf-thumb.jpg" class="img img-responsive thumbnail uploadedfile-thumb"/>
    <a ng-href="http://localhost:3000/uploads/{{file.filename}}" target="_blank" class="uploaded-file-links">View</a>
    <a ng-href="#" ng-click="deleteFile(file.filename);" class="uploaded-file-links">Delete</a>
</div>