1 つのタグで Twitter ブートストラップ コンポーネントを使用できるようにするディレクティブを作成したいと考えています。
タグは次のようになります。
<bootstrapinput
model="lastName"
key="lastName"
localized="Surname"
formpath="playerForm.lastName"
required>
</bootstrapinput>
ディレクティブは次のようになります
.directive('bootstrapinput', function () {
return {
restrict:'E',
compile:function (tElement, tAttrs, transclude) {
var type = tAttrs.type || 'text';
var required = tAttrs.hasOwnProperty('required') ? 'required' : '';
var ngClazz = tAttrs.hasOwnProperty('formpath') ? 'ng-class="{error: ' + tAttrs.formpath + '.$invalid}"' : '';
var html = '<div class="control-group" ' + ngClazz + '>' +
'<label class="control-label" for="' + tAttrs.key + '">' + tAttrs.localized + '</label>' +
'<div class="controls">' +
'<input ng-model="'+tAttrs.model+'" type="' + type + '" id="' + tAttrs.key + '" name="' + tAttrs.key + '" placeholder="' + tAttrs.localized + '" ' + required + ' />' +
'</div>' +
'</div>';
tElement.replaceWith(html);
}
}
});
タグはコントローラに埋め込まれています。しかし、スコープを介してコントローラーのモデルにアクセスすると、モデルは空になります。さらに、ng-class 属性は評価されません。つまり、CSS が適切に割り当てられません。
EDITモデルへのアクセスが機能するようになりました。しかし、ng-class 属性はまだ正しく評価されていません。