2016-01-08 29 views
2

我正在使用其字段綁定到函數表達式的自定義單元格模板。單元格數據與具有多個鍵的對象綁定。我正在使用一個自定義函數,它將字符串返回給該列單元格模板。UI Grid中自定義單元格模板中的編輯和過濾問題

現在有2個問題,我在做這個實現後面臨。

  1. 篩選不適用於該特定單元格。
  2. 還有一個角度誤差而移動到該單元編輯模式:

Error: [ngModel:nonassign] Expression 'row.entity'getDisplayTitle'' is non-assignable. Element: 'getDisplayTitle'" class="ng-pristine ng-untouched ng-valid ng-scope">

我已經複製使用plunker這個問題。

Plunker - UiGrid

var app = angular.module('app', ['ngTouch', 'ui.grid', 'ui.grid.edit']); 

    app.controller('MainCtrl', ['$scope', function ($scope) { 
     $scope.getDisplayTitle = function (rowEntity, column) { 
      var displayTitle = ""; 
      if (rowEntity[column] !== null) { 
       if (rowEntity[column].length > 1) { 
        for (var i = 0; i < rowEntity[column].length; i++) { 
         displayTitle = displayTitle + rowEntity[column][i].street + "; "; 
        } 
       } 
       else if (rowEntity[column].length == 1) { 
        displayTitle = rowEntity[column][0].street; 
       } 
       else 
        displayTitle = rowEntity[column].street; 
      } 
      else { 
       displayTitle = ""; 
      } 
      return displayTitle; 
     } 
    $scope.gridOptions = { 
      enableSorting: true, 
      enableFiltering:true, 
      columnDefs: [ 
       { name:'firstName', field: 'first-name' }, 
        { 
       name:'address', 
       field: 'getDisplayTitle()', 
       cellTemplate : '<div class=".ui-grid-cell-contents"> {{grid.appScope.getDisplayTitle(row.entity, col.colDef.name)}} </div>'}, 

      , 
       { name:'1stFriend', field: 'friends.name' } 

      ], 
      data : [  { 
           "first-name": "Cox1", 
           "friends": {name:"ritesh"}, 
           "address": [{street:"ritesh1", city:"Laurel", zip:"39565"},{street:"puneet", city:"Laurel", zip:"39565"},{street:"kavleen", city:"Laurel", zip:"39565"},] 

          },{ 
           "first-name": "Cox2", 
           "friends": {name:"puneet"}, 
           "address": [{street:"ritesh2", city:"Laurel", zip:"39565"},{street:"puneet", city:"Laurel", zip:"39565"},{street:"kavleen", city:"Laurel", zip:"39565"},] 

          },{ 
           "first-name": "Cox3", 
           "friends": {name:"kavleen"}, 
           "address": [{street:"ritesh3", city:"Laurel", zip:"39565"},{street:"puneet", city:"Laurel", zip:"39565"},{street:"kavleen", city:"Laurel", zip:"39565"},] 

          },{ 
           "first-name": "Cox4", 
           "friends": {name:"alankar"}, 
           "address": [{street:"ritesh4", city:"Laurel", zip:"39565"},{street:"puneet", city:"Laurel", zip:"39565"},{street:"kavleen", city:"Laurel", zip:"39565"},] 

          } 
         ] 
      }; 

}]); 

感謝

回答

0

的問題是由於該行:

field: 'getDisplayTitle()', 

,說該值應該內rowEntity.getDisplayTitle() [當心被發現的網格,這不是指向$scope.getDisplayTitle(),所以我認爲它不會按你所希望的那樣工作]。

但正如你所看到的,getDisplayTitle()是一個函數,你不能賦值給一個函數:

getDisplayTitle() = foo; // This is not a valid expression in javascript 

所以,你必須把你排實體的財產field裏面,你會發現該值在用戶結束編輯後更新。

+0

你能幫我解決這個使用plunker例子....謝謝。 –

相關問題