2017-09-25 42 views
0

我試圖將我的數據對象和對象ID傳遞給按鈕,它表明我有語法錯誤,其中字符串產生的是奇怪的輸出。RenderWith傳遞ID不起作用

控制器

$scope.dtUnitColumns = [ 
    DTColumnBuilder.newColumn(null, 'Action').notSortable() 
     .renderWith(function(data, type, full, meta){ 
      if(false) return ''; 
      else { 
      return '<div class="btn-group">' 
         + '<button data-toggle="modal" data-target="#modal-manage-unit" type="button" ng-click="openUpdateUnitModal('+data+')" class="btn btn-xs btn-default"><i class="fa fa-pencil"></i></button>' 
         + '<button type="button" ng-click="openRemoveUnitModal('+data.id+')" class="btn btn-xs btn-default"><i class="fa fa-times"></i></button>' 
        + '</div>'; 
       } 
      }) 
    ]; 

HTML輸出

<div class="btn-group"> 
    <button data-toggle="modal" data-target="#modal-manage-unit" type="button" ng-click="openUpdateUnitModal([object Object])" class="btn btn-xs btn-default"> 
     <i class="fa fa-pencil"></i> 
    </button> 
    <button type="button" ng-click="openRemoveUnitModal(73cc5596-9dc5-11e7-adc6-6c40088df298)" class="btn btn-xs btn-default"> 
     <i class="fa fa-times"></i> 
    </button> 
</div> 

錯誤

> My data is an object. 
> Syntax Error: Token 'Object' is unexpected, expecting []] at column 29 of the expression [openUpdateUnitModal([object] starting at [{4}]. 

> My data.id shows error, because is an UUID without string 
> Syntax Error: Token 'cec042' is unexpected, expecting [)] at column 23 of the expression [openRemoveUnitModal(73cec042-9dc5-11e7-adc6-6c40088df298)] starting at [cec042-9dc5-11e7-adc6-6c40088df298]. 

當我嘗試使用「openRemoveUnitModal(」'+ data.id +'「)」將UUID轉換爲字符串時,它會在後面的字符串中生成一個額外的平等值。

納克單擊= 「openRemoveUnitModal(」 73cec042-9dc5-11e7-adc6-6c40088df298 「)」= 「」

回答

0

有一個字符串data.id之間解析錯誤。只需添加正斜槓即可忽略報價。

ng-click="openRemoveUnitModal(\''+data.id+'\')" 

對於要被傳送的數據對象,NG-點擊參數必須是,在$範圍內定義的值(整數,字符串或布爾值)或可變的。 因此要傳遞數據對象。只需在之前創建一個空對象,並將data.id作爲數組參數來獲取數據值。

.renderWith(data, type, full, meta){ 
    $scope.arr[data.id] = data; 
    return '<button data-toggle="modal" data-target="#modal-manage-unit" type="button" 
      ng-click="openUpdateUnitModal(arr[\''+data.id+'\'])" class="btn btn-xs btn-default"><i class="fa fa-pencil"></i></button>' 
}) 

注意到:在我的情況,data.id有破折號的字符串,所以正斜槓是必需的,否則就會產生奇怪的行爲格式。