2012-10-25 10 views
7

HTML入力コントロールのセットがtestVarにバインドされていますtype = "number"の入力がそのバウンド値の更新を表示しないのはなぜですか?

<div ng-app> 
    <div ng-controller="TestCtrl"> 
     <input type="text" ng-model="testVar"> 
     <input type="number" min="1" max="10" ng-model="testVar"> 
     <input type="range" min="1" max="10" ng-model="testVar"> 
     <button ng-click="testVar = 5">set to 5</button>    
    </div> 
</div> 

最初はすべて「=期待通りの入力コントロールがこの値を示すが、testVarはタイプによって変更されたときにタイプ=「数」の入力が空白になります「範囲」またはタイプ=「テキスト」入力。プログラムでtestVarの値を設定すると、予想される動作になります。すべての入力が更新された値を示します。 http://jsfiddle.net/7cbYp/

ですが、なぜでしょう、そしてそれがどのように固定することができます。

問題は、この単純なケースで実証されていますか?私はそれをテストしている

var App = angular.module('App', []); 
App.directive('fix', function(){ 
    return{ 
     link: function(scope, elem, attrs){ 
      scope.$watch(attrs.fix, function(v){ 
       if(typeof v === 'string') v = parseInt(v, 10); 
       elem.val(v); 
      }); 
      elem.bind('change', function(){ 
       scope[attrs.fix] = elem.val(); 
       scope.$digest(); 
      }); 
     } 
    }; 
}); 

+2

問題は、入力[タイプ=数]は確かにそれは「NG-無効-番号」クラスを取得し、文字列値を受け付けないようです。私はこれがバグだと思う。ボタンをこのボタンに変更すると、testVar = '5' ">に設定されます。同じエラーが表示されます。 –

+0

あなたはどのブラウザをテストしていますか? – Spudley

+0

私はchromium21、opera12、IE9を使用しています(範囲入力はありませんが、数字は空です) –

答えて

3

クイックフィックスは

<input type="number" min="1" max="10" fix="testVar"> 

JSをディレクティブを作成し、モデルの変更やHTMLアイテム自体

HTMLを監視することですChrome上で動作します。

jsfiddle:http://jsfiddle.net/jaimem/HLnqt/3/

注:これを行うためのクリーンな方法がなければなりません。

関連する問題