入力に変換される「フィールド」タグを定義する単純なディレクティブがあります。
この入力がタイプの場合、text
すべて問題ありません。ただし、タイプcheckbox
(またはradio
) の場合は機能しなくなります。
<body ng-app="MyApp" ng-controller="MyCtrl">
<h1>This is ok:</h1>
T1: <input type="text" ng-model="data.aText" ></input><br/>
T2: <field type="text" model="data.aText" ></field><br/>
T3: {{data.aText}}
<hr/>
<h1>This does not work:</h1>
C1: <input type="checkbox" ng-model="data.aBoolean" ></input><br/>
C2: <field type="checkbox" model="data.aBoolean" ></field><br/>
C3: {{data.aBoolean}}
<hr/>
</body>
<script>
var App = angular.module('MyApp', [] );
App.directive( 'field', function(){
return {
restrict: 'E',
scope: { model: '=', type: '@' },
replace: false,
template: '<input ng-model="model" type="{{type}}" />'
}
} );
var MyCtrl = function( $scope ){
$scope.data = {};
$scope.data.aText = 'Test Text';
$scope.data.aBoolean = true;
return $scope;
}
</scipt>
これがフィドルです:http://jsfiddle.net/Scheintod/fK2R2/5/
そして「おまけ質問」として: 設定するとレンダリングが壊れるのはなぜreplace: true
ですか?
どうもありがとう!