オブジェクトをディレクティブに渡してから、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>';
}
}
あなたはボタンのやるNGがクリック持って、正確に何をしようとしていますか?たぶん私たちはそれを行う他の方法を提案することができます... – wdanda
は、テンプレート関数 '{{value}}'の値を中心に中括弧を失います。{{value}} –
@wdandaそれはちょうどvalue属性をng-model属性で指定されたオブジェクトに追加する – Lefka