2016-05-25 8 views
0

オブジェクトをディレクティブに渡してから、ng-click属性内で使用するのは困ります。 HTMLと指令は以下の通りです。書かれているように、NG-class属性は、私がNGクリックディレクティブ内{{value}}を使用することはできませんしかし、NG-クリックディレクティブはng-click="selectedItem = value"ディレクティブ内のオブジェクトをng-clickに渡す

として誤ってレンダリングされるng-class="{ 'my-class': selectedItem === {"FirstName":"John","LastName":"Snow"} }"

として「正しく」レンダリングされるか、それがスローされますToken '{' invalid key at column 17 of the expression [selectedItem = {{value}}] starting at [{value}}]."

私はこれを切り替えて、テンプレートの代わりにリンクを使用し、scope.valueを使用してみました。これは、その時点で文字列を連結しているので、[object Object]を返します。

HTML:

<table ng-table="tableParams"> 
    <tr ng-repeat="item in $data"> 
     <td> 
      <check-box ng-model="selectedItem" behavior="radio" value="item"></check-box> 
     </td> 
    </tr> 
</table> 

ディレクティブ:このソリューションで

angular.module('check-box.directive', []) 
    .directive('checkBox', checkBoxDirective); 

    function checkBoxDirective() { 
    return { 
     scope: { 
      value: '=' 
     }, 
     restrict: 'E', 
     replace: true, 
     template: template 
    }; 

    function template(element, attributes) { 

     var baseHtml = '<button type="button" '; 
     var ngClass = 'ng-class="{ \'my-class\': ' + attributes.ngModel + ' === {{value}} }"'; 
     var ngClick = 'ng-click="' + attributes.ngModel + ' = value"'; 

     return baseHtml + ngClass + ngClick + '></button>'; 
    } 
} 
+0

あなたはボタンのやるNGがクリック持って、正確に何をしようとしていますか?たぶん私たちはそれを行う他の方法を提案することができます... – wdanda

+0

は、テンプレート関数 '{{value}}'の値を中心に中括弧を失います。{{value}} –

+0

@wdandaそれはちょうどvalue属性をng-model属性で指定されたオブジェクトに追加する – Lefka

答えて

0

はルック:

var ngClick = `ng-click= "${attributes.ngModel} = ${value}"`; 
関連する問題