Javascript 使用Angular设置html表单类型
我试图使用Angular来显示包含对象所有属性的窗体。其中一些对象是密码,我想对这些对象使用密码表单类型 到目前为止,我已经通过将type属性设置为angular方法使其工作,但我想知道是否有更清晰的angular语法(比如如何使用ng href而不是href) 示例html代码:Javascript 使用Angular设置html表单类型,javascript,angularjs,forms,angularjs-directive,Javascript,Angularjs,Forms,Angularjs Directive,我试图使用Angular来显示包含对象所有属性的窗体。其中一些对象是密码,我想对这些对象使用密码表单类型 到目前为止,我已经通过将type属性设置为angular方法使其工作,但我想知道是否有更清晰的angular语法(比如如何使用ng href而不是href) 示例html代码: <form name="siteSettingsForm" novalidate class="form-horizontal" ng-submit="save()"> <d
<form name="siteSettingsForm" novalidate class="form-horizontal" ng-submit="save()">
<div class="form-group" ng-repeat="property in siteProperties">
<label for="{{ property }}" class="control-label col-sm-3">{{ property }}</label>
<input id="{{ property }}" type="{{ getPropertyFormType(property) }}" ng-model="site[property]" class="form-control col-sm-9" />
</div>
<div>
<input type="submit" class="btn btn-primary" value="Save"/>
</div>
</form>
所以问题是:有没有更好的方法使用Angular来指定表单中的类型?查看ng attr部分。您可以使用它来修饰type属性。尽管您无论如何都不允许动态切换输入类型,但我看不到以这种或那种方式使用它的明显优势。这样做(加载DOM时进行硬编码)就可以满足您的需要
根据对象的形状,您可能可以清理函数并将其直接放入HTML中的角度表达式中。留给后代:我最终使用了问题中描述的方法
app.controller("settingsController", [
'$scope',
function ($scope) {
$scope.site = {
basic_auth_username: "myUsername",
basic_auth_password: "hide me"
};
$scope.siteProperties = [];
for (var property in $scope.site) {
if ($scope.site.hasOwnProperty(property)) {
$scope.siteProperties.push(property);
}
}
$scope.getPropertyFormType = function(property) {
if (property.indexOf("password") > -1) {
return "password";
} else {
return "text";
}
}
}]);