2013-04-08 13 views
0

在ng-repeat中,我有一個有條件的ng-switch。我希望ng-switch參數的值是一個綁定。但是,花括號綁定似乎並未轉換爲預期的生成值。我知道ng-switch會創建一個新的範圍,這肯定會導致問題。我知道'dot' work-around,但由於這裏的值是通過控制器查詢來自服務,所以我無法弄清楚在這種情況下如何實現它。AngularJS - 如何訪問ng-switch中的綁定值

HTML

<tr ng-repeat="user in users"> 
    <td ng-switch on="editState"><p ng-switch-when="noEdit">{{user.username}}</p><input type="text" value="{{user.username}}" ng-switch-when="{{user.username}}"></td> 
</tr> 

controller.js

$scope.users = Users.query(); 

CNC中

這是觸發開關

$scope.editUser = function(usernameEdit) { 
    $scope.editState = usernameEdit; 
}; 
功能
+0

你能解釋一下你正在嘗試做的:'NG-開關時= 「{{user.username}}」'?你可以改用ng-switch-default嗎? – 2013-04-08 21:34:37

+0

該表格行將爲每個用戶重複。當我按下每個用戶旁邊的「編輯」鏈接時,我希望切換條件只匹配該用戶名,因此隱藏段落並顯示文本輸入。如果我使用開關默認不是列表中的所有用戶切換? – Fisu 2013-04-09 04:46:52

+0

我還添加了觸發開關參數的函數 – Fisu 2013-04-09 05:54:18

回答

2

如果您希望能夠同時編輯多個用戶,則單個$scope.editState將不起作用。我建議把每個user一個edit屬性,使用該屬性來控制NG-開關:

<tr ng-repeat="user in users"> 
    <td ng-switch on="user.edit"> 
     <span ng-switch-when="true"> 
     <input type="text" value="{{user.username}}"> 
     <a href="" ng-click="user.edit=false">done</a> 
     </span> 
     <p ng-switch-default> 
     <a href="" ng-click="user.edit=true">edit</a> {{user.username}} 
     </p> 
    </td> 
</tr> 

Fiddle

+0

非常感謝,讓它變得如此清晰,似乎我並不真正瞭解ng-switch從角度文檔切換 – Fisu 2013-04-10 05:50:08