2016-08-21 55 views
0

我想在AngularJS的數據表上實現內聯編輯。我試圖找到一些例子,但我不能。有一個很好的例子here,但它與AngularJS不兼容。那麼,我如何在AngularJS中實現它?如何在AngularJS的數據表上實現內聯編輯?

從我的項目

相關代碼:

<tbody> 
    <tr ng-repeat="meal in meals"> 
     <td>{{ meal.id }}</td> 
     <td>{{ meal.name }}</td> 
     <td> 
      <a ng-click="open_yemek('lg', meal.name, meal.recipe, meal.ingredients)">Tıklayın</a> 
     </td> 
     <td class="text-center"> 
      <!--<small class="label label-warning" style="font-size: 9px !important;"><i class="fa fa-clock-o"></i> {{ yemek.sure }}</small>--> 
      {{ meal.time }} 
     </td> 
     <td>{{ meal.category }}</td> 
     <td>{{ meal.region }}</td> 
     <td>{{ meal.user }}</td> 
     <td class="text-center">{{ meal.rank }}/10</td> 
     <td>{{ meal.status }}</td> 
     <td> 
      <i ng-click="editItem($index)" class="fa fa-pencil-square-o" aria-hidden="true"></i> 
      <a ng-click="removeItem('yemekler',$index)"><i class="fa fa-trash-o" aria-hidden="true"></i></a> 
      <a ng-click="addItem('yemekler')"><i aria-hidden="true" class="fa fa-plus"></i></a> 
     </td> 
    </tr> 
</tbody> 

這是JS:

$scope.dtOptions = DTOptionsBuilder.newOptions() 
    .withOption('lengthMenu', [5, 10, 15]) 
    .withOption('autoWidth', true); 

$scope.meals = {}; 

mealFactory.get() 
    .success(function(data) { 
     console.log(data); 
     $scope.meals = data; 
    }); 

the image

回答

1

這裏我的建議是使用NG-包括與TD內<input>標籤元件。 通過這種方式,您只需單擊一下即可擁有「只讀」td和可編輯的td。

表格的HTML代碼應該是這樣的:

<tbody> 
    <tr ng-repeat="row in data track by $index"> 
     <td> </td> 
     <td ng-click="makeEditable($index)" ng-include="{{row.isEditable ? 'editableInput.html' : 'readonly.html'}}"> </td> 
     <td> </td> 
    </tr> 
</tbody> 

隨着使用一些模板:

<script type="text/ng-template" id="editableInput.html"> 
    <input type="text" ng-model="row.value"></input> 
</script> 

<script type="text/ng-template" id="readonly.html"> 
    <span>{{row.value}}</span> 
</script> 

而在你的控制器,點擊收聽:

$scope.makeEditable = function($index){ 
    //remove every previous editable input... 
    if($scope.lastDataEditable != null) 
     $scope.lastDataEditable = false; 

    $scope.data[$index].isEditable = true; 
    $scope.lastDataEditable = $scope.data[$index]; 
} 

請注意:您尚未提供任何形式的代碼,並且您的問題有點過於籠統。我向你提供了你應該做的一般想法。

實際上,你也應該考慮使用一個指令來達到同樣的目的:這一切都取決於你的環境的複雜性。

+0

我試圖改變我的代碼與您的建議,但我不能所以我添加了我的代碼形式。 –

+0

請分享您的JavaScript代碼 – Luxor001

+0

添加JS代碼。顯示的數據正在從數據庫中檢索。 –

相關問題