RenderWith传递id不起作用

时间:2017-09-25 03:59:30

标签: javascript angular datatables

我试图将我的数据对象和对象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转换为字符串时,它将在字符串后面产生额外的相等。

     

ng-click =“openRemoveUnitModal(”73cec042-9dc5-11e7-adc6-6c40088df298“)”=“”

1 个答案:

答案 0 :(得分:0)

data.id之间存在字符串解析错误。只需添加正斜杠以忽略引用即可。

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

对于要传递的数据对象,ng-click参数必须是值(整数,字符串或布尔值)或$ scope中定义的变量。 因此,要传递数据对象。只需创建一个空对象,然后将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有一个破折号字符串,因此需要使用正斜杠,否则会产生奇怪的行为格式。