AngularJS ng-click ng-repeat内部

时间:2015-01-07 23:46:48

标签: javascript angularjs

我有一个ng-click嵌套在ng-repeat中,我试图从循环中的当前项传递一个值。如果我检查使用Chrome开发人员工具生成的html,它看起来是正确的(& ID = 1),但当我在函数中放置一个断点时,它显示& ID = {{d.ID}}作为传递给的值功能。 任何帮助表示赞赏。

<tr ng-repeat-start="d in data">
    </td>
    <td> 
        <a href="#" ng-click="openDialog(false,'http://portal.sharepoint.com/Lists/Organization/DispForm.aspx?IsDlg=1&ID={{d.ID}}')"> {{d.OrganizationName}}</a> 
    </td> 
</tr>

3 个答案:

答案 0 :(得分:2)

我建议将Id in作为openDialog方法的属性传递,并在控制器中构建url字符串。

ng-click="openDialog(false,'http://portal.sharepoint.com/Lists/Organization/DispForm.aspx?IsDlg=1', d.ID)"

然后在控制器中构建字符串并执行位置更改。更容易调试和解除视图混乱。

您还可以将此字符串存储在控制器“http://portal.sharepoint.com/Lists/Organization/DispForm.aspx?IsDlg=1

ng-click="openDialog(false, d.ID)"

答案 1 :(得分:2)

试一试:

 <tr ng-repeat-start="d in data">
            </td>
            <td> 
                <a href="" ng-click="openDialog(false,'http://portal.sharepoint.com/Lists/Organization/DispForm.aspx?IsDlg=1&ID='
+d.ID)"> {{d.OrganizationName}}</a> 
            </td> 
        </tr>

答案 2 :(得分:0)

ngClick指令将评估表达式。我想这不是你想要的

尝试通过简单的onclick更改ng-click。它将解决您的问题:

更改

 <a href="#" ng-click="openDialog(false,'http://portal.sharepoint.com/Lists/Organization/DispForm.aspx?IsDlg=1&ID={{d.ID}}')"> {{d.OrganizationName}}</a> 

 <a href="#" onclick="openDialog(false,'http://portal.sharepoint.com/Lists/Organization/DispForm.aspx?IsDlg=1&ID={{d.ID}}')"> {{d.OrganizationName}}</a> 

使用ng-click。您不需要使用{{}}来获取变量值。就像来自Angular Docs

的样本一样
<button ng-click="count = count + 1" ng-init="count=0">
  Increment
</button>
<span>
  count: {{count}}
</span>