Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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_Angularjs Model - Fatal编程技术网

Angularjs 如何将空白输入绑定到模型?

Angularjs 如何将空白输入绑定到模型?,angularjs,angularjs-model,Angularjs,Angularjs Model,下面是一个简单的角度示例: <!DOCTYPE html> <html ng-app="GenericFormApp"> <head> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.min.js"></script> </head> <body ng-controller="GenericFormCtr

下面是一个简单的角度示例:

<!DOCTYPE html>
<html ng-app="GenericFormApp">
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.min.js"></script>    
</head>
<body ng-controller="GenericFormCtrl as ctrl">    
    <div>
        Model: {{ctrl.model}}
    </div>
    <div>
        <input ng-model="ctrl.model" />
    </div>
    <div>
        <input type="button" value="Alert model" ng-click="ctrl.showModel();" />
    </div>
    <script>        
        angular.module("GenericFormApp", [])
            .controller("GenericFormCtrl", [function () {               
                this.showModel = function () { alert(this.model); };
            }])        
    </script>
</body>
</html>

模型:{{ctrl.Model}
angular.module(“GenericFormApp”,[])
.controller(“GenericFormCtrl”,[function(){
this.showModel=函数(){alert(this.model);};
}])        
上面展示了如何将一个输入绑定到一个模型,这是Angular的一个基本特性

它还允许用户弹出带有输入内容的模式对话框。这可以正常工作,除非输入为空

在这种情况下,它显示“未定义”

当然,我可以简单地编写一行代码,将模型的初始值设置为空白字符串,但这并不特别实用,因为在我的实际应用程序中,有许多输入,用户可以将任意数量的输入留空


简而言之,我想知道如何使Angular知道模型中的空白输入应该包含空白字符串。

我将使用自定义指令来扩展默认输入指令行为。所以,若输入有一个模型,该指令将检查该模型是否未定义,若未定义,则为其分配一个空字符串值


{{ctrl.model}}
angular.module(“GenericFormApp”,[]) .controller(“GenericFormCtrl”,[function(){ this.showModel=函数(){alert(this.model);}; }]) .指令(“输入”,函数($parse){ 返回{ 链接:函数(范围、元素、属性、ngModelController){ if(属性ngModel){ var模型=$parse(attr.ngModel); if(模型类型(范围)=“未定义”){ 模型。分配(范围“”); } } } }; });
I igree with@Claies,但是,如果您需要将其用于某些特定属性,可以使用ng init:

<input type="text" ng-init="ctrl.model = ctrl.model || ''" ng-model="ctrl.model"/>


或者不直接在输入元素上创建特定指令,如“auto init”或类似指令。

由于JavaScript的工作方式,变量
this.model
在输入值之前实际上不存在。显示
未定义
的警报正在执行此操作,因为变量尚未创建。您可以编写一个类似于
警报的条件(this.model | | |“”),但不能更改JavaScript打印不存在的变量的方式。此外,您不希望模型中的每个属性都是
,因为这会导致不必要的数据传输。您可以正确地说,
这个.model
在输入值之前是不存在的。Angular是在用户输入某个内容时为我输入一个值。我想知道如何使Angular在用户不输入任何内容时将空白字符串放入该模型中;就像jQuery应用程序从空白输入中读取空白字符串一样,除了使用外,还必须逐个属性执行。