Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何以角度动态生成字段类型编号?_Angularjs_Ionic Framework - Fatal编程技术网

Angularjs 如何以角度动态生成字段类型编号?

Angularjs 如何以角度动态生成字段类型编号?,angularjs,ionic-framework,Angularjs,Ionic Framework,我使用一些自定义指令从JSON生成HTML表单。JSON的一部分包括对字段值的限制 JSON对字段的限制之一是正十进制类型。我在link函数中使用的代码用于完成以下任务: //...snip if (<this field should be number>) { elem.attr("type", "number"); } /…剪断 如果(){ 要素属性(“类型”、“编号”); } 这将成功地将字段类型更改为number。然而,有两个问题: 它不允许负数 每次我键入一个键

我使用一些自定义指令从JSON生成HTML表单。JSON的一部分包括对字段值的限制

JSON对字段的限制之一是正十进制类型。我在link函数中使用的代码用于完成以下任务:

//...snip
if (<this field should be number>) {
   elem.attr("type", "number");
}
/…剪断
如果(){
要素属性(“类型”、“编号”);
}
这将成功地将字段类型更改为
number
。然而,有两个问题:

  • 它不允许负数
  • 每次我键入一个键笔划(即使对于有效的数字),它都会抛出一个数字格式异常。例如,如果我键入“123”,我将得到以下3个错误:
    • 错误:[ngModel:numfmt]1是一个数字
    • 错误:[ngModel:numfmt]预期12是一个数字
    • 错误:[ngModel:numfmt]预期123是一个数字
  • 我知道模型已成功更改为数字类型,因为当我使用指令打印出来时,它会显示为不带引号

    所以我的问题是:

  • 如何允许负数
  • 我如何阻止所有异常的出现
  • 如何动态更改输入元素的类型 只需使用AngularJS插值,即可动态更改
    输入元素的类型

    <input type="{{dynamicType}}" ng-model="inputValue">
    
    HTML

    
    


    type
    属性是
    input
    元素的固有部分。有关详细信息,请参阅

    在这种情况下效果很好。为什么需要
    $compile
    type
    属性是
    input
    元素的固有部分。再见。@georgeawg谢谢你。你说得对,我不需要
    $compile
    。由于某些原因,我现在无法让字段显示验证错误,但这可能是一个单独的问题。您应该显示指令的代码。您没有显示您正在使用
    $compile
    ,读者需要了解您是如何与
    ngModelController
    @georgeawg进行交互的。再次感谢您的帮助,因为它让我走上了正确的道路。我认为我的代码中可能存在其他问题,我不想将其转储到StackOverflow上,因此我将尝试将这些问题转化为可管理的部分。
    angular.module("myApp").directive("typeVar", function() {
         return {
             link: linkFn
         };
         function linkFn(scope,elem,attrs) {
             //elem.attr("type", "number");  
             attrs.$observe("typeVar", function(value) {
                 elem.attr("type", value);
                 //attrs.$set("type", value);
             });
         }
    });
    
    <input type-var="{{dynamicType}}" ng-model="inputValue">