AngularJSを使用してアンケートフォームを作成しており、HTMLを軽量に保つために必要なさまざまな種類の質問をテンプレート化しています。
HTML:
<qtnyesno qtn-variable="testVar">This is a test question. Yes or No?</qtnyesno>
testVar = {{testVar}}
JS:
var module = angular.module('app', [])
.directive('qtnyesno', function() {
return {
restrict: 'E', // must be an HTML element
transclude: true,
scope: {
valvar: '@qtnVariable',
},
template:
'<div>' +
'<label ng-transclude></label>' +
'<label class="radio inline"><input type="radio" name="rdo{{valvar}}" value="1" ng-model="{{valvar}}">Yes </label>' +
'<label class="radio inline"><input type="radio" name="rdo{{valvar}}" value="0" ng-model="{{valvar}}">No </label>' +
'<hr></div>',
replace: true,
};
});
入力タグng-model="{{valvar}}"内で使用すると、コンパイルエラーが発生します。
代わりにng-click="{{valvar}} = 0"を使用しようとすると、コンパイルエラーは発生しませんが、ラジオボタンをクリックしてもtestVarの値を取得するための表示ステートメントが機能しません。
ボタンをクリックしたときにHTMLの最後の行がtestVarの値で適切に更新されるように、これをどのように修正しますか?
Bootstrapと一緒にAngularJSを使用しています。私は両方のフレームワークにかなり慣れていないので、これがこれを行うための最良の方法であるかどうかはわかりません。