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应用程序从空白输入中读取空白字符串一样,除了使用外,还必须逐个属性执行。