2017-09-25 16 views
0

データオブジェクトとオブジェクトIDをボタンに渡そうとしましたが、文字列の生成に奇妙な出力があるという構文エラーがあります。RenderWith passing 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クリックします。単に引用符が無視されるようにスラッシュを追加するだけです。データオブジェクトが渡されるためには

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はダッシュの文字列を持っているので、スラッシュがそうでなければ、それは奇妙な行動の書式が生成されますが必要です。

関連する問題