2016-10-04 53 views
0

下面的代码的工作,只有当输入类型是文本,并且当类型是数它不工作。角指令不与输入类型工作=“号码”

<div ng-app="myApp" ng-controller="myCtrl as model"> 
<input type="text" ng-model="cero" ng-decimal > 
</div> 


angular 
    .module("myApp",[]) 
    .controller('myCtrl', function($scope){ 
     var model=this; 
    }) 
    .directive('ngDecimal', function ($parse) { 
     var linkFunction =function(scope, element, attrs){  
      element.bind("keypress", function(event) { 
       if(event.which === 13) {  
        scope.$apply(function(){ 
         scope.$eval(attrs.format, {'event': event}); 
         if(scope.cero===undefined || scope.cero===''){ 
          scope.cero="0.", 
          event.preventDefault(); 
         }else{ 

         } 
        }); 
       } 
      }); 
     }; 
     return{ 
      restrict : 'A', 
      scope:{ 
       cero: '=ngModel' 
      }, 
      link: linkFunction 
     } 
    }); 

我需要与正在改变的类型和数量仍然使代码的工作有所帮助。该代码也在CodePen

+1

您没有描述您的问题或提出问题。 – Amy

+0

也许你应该试着用'scope.cero ='0',' –

+0

你试图对这个指令做什么。你能详细说明你的问题吗? –

回答

1

更新笔:http://codepen.io/anon/pen/QKOVkP?editors=1011

工程与数量,约束是不能分配

scope.cero = "0." // string value 

到一个type="number"因此将其替换为您要分配的最小数量,也许

scope.cero = parseFloat("0.01") // parseFloat("0.") won't work 
+0

是完美的,但条件,所以我没有消除用户已经写了,但不再有效,你知道吗? –

+0

更新plunker用'警报()',工作左右逢源,还要检查是否条件'scope.cero === null'已加入的条件 - http://codepen.io/anon/pen/QKOVkP?编辑= 1011 – Aks1357

+0

是完美的,谢谢 –

1

在else条件中加上这个。

scope.cero = parseFloat(scope.cero).toFixed(2); 

字符串转换为十进制

下面是代码:working code

+0

感谢这段代码,但如果我改变输入到键入数字不工作http://codepen.io/fernandooj/pen/amVaQm?editors=1011 –