2016-01-16 60 views
0

我想允許重命名一行中的項目。我知道使用$ scope.editMode等,但我意識到,當我使用ng-repeats時,我將列表中的所有條目都作爲edditable而不是特定的索引。以下是我在我的HTML:ngrepeat編輯符合表格

 <li ng-repeat="playlist in myPlaylist"> 

     <a href="" data-ng-hide="editPlaylist">{{playlist.name}}</a> 

      <form data-ng-show="editPlaylist" data-ng-submit="renamePlaylist()"> 
      <input data-ng-model="editablePlaylistName"> 
       </form> 
     </li> 

我的控制器使用上下文菜單設置爲這樣:

$scope.editPlaylist =false; 

$scope.menuOptions = [ 
['Rename', function ($itemScope) { 
    $scope.editPlaylist = true; 
    $scope.editablePlaylistName = $itemScope.playlist.name; 
}] 

等。當我想重新命名,我設置了隱藏和顯示爲true /相應的錯誤,但我的問題是,列表中的所有項目都是真實的,從而導致每個項目的許多輸入字段。我將如何去只顯示列表的相應$索引的輸入字段?我跟着一個類似的帖子AngularJS inline edit inside of ng-repeat,但無法確定他們爲什麼只能顯示相應$索引的輸入字段。圖像顯示如下:

enter image description here

感謝,

回答

1

一種方式來做到這一點是設置「編輯」標誌上的每個重複項目。

標記:

<li ng-repeat="playlist in myPlaylist"> 
    <a data-ng-hide="playlist.isEditMode" ng-click="playlist.isEditMode=true"> 
    {{playlist.name}} 
    </a> 
    <form data-ng-show="playlist.isEditMode" data-ng-submit="renamePlaylist()"> 
    <input data-ng-model="playlist.name"> 
    </form> 
</li> 

我不知道我理解你的控制器代碼做什麼,但這裏是它可能看上去是這樣的:

$scope.myPlaylist = [...]; 
$scope.renamePlaylist = function() { 
    //do whatever you do to rename play list 
    this.playlist.isEditMode = false; 
}; 

這裏有一個plnkr,希望這有助於。

0

集模糊控制器中的真實使用

<li ng-repeat="playlist in myPlaylist"> 
    <input type="text" value="{{playlist.name}}" ng-blur="blur=true;" ng-show="!blur"/> 
    <span ng-focus="blur=false;" ng-show="blur">{{playlist.name}}</span> 
</li> 

也不要忘了把重點放在跨度重點投入。對於手機上寫的錯別字和簡短回答感到抱歉。