【发布时间】:2014-05-25 14:17:35
【问题描述】:
我有一个我想动态命名的输入元素,但到目前为止我没有运气使用 angular js。
都没有
<input type="text" name="resource.Name" ng-model="resource.Value" ng-required="resource.IsRequired">
也没有
<input type="text" name="{{resource.Name}}" ng-model="resource.Value" ng-required="resource.IsRequired">
为我工作。当我尝试访问 name 属性时,它总是作为 resource.Name 而不是它包含的值返回。我试图命名这个输入控件的主要原因是验证,如果用户没有在字段中输入文本,我想告诉他们需要哪个文本框。如果有任何角度指令我可以用于此目的,我也准备好使用它们。
谁能告诉我如何做到这一点。
我的验证函数如下:
window.resourcesValidation = function ($scope, $rootScope, $alert) {
var subscriptions = $scope.scopeData.Subscriptions;
var isValidated = true;
if ($scope.resourceDataForm && $scope.resourceDataForm.$error && $scope.resourceDataForm.$error.required) {
var missingFields = [];
angular.forEach($scope.resourceDataForm.$error.required, function (value, key) {
isValidated = false;
missingFields.push("-" + value.$name);
});
$alert.error("Please fill in the all required fields.\r\n" + missingFields.join("\r\n"));
}
if (isValidated)
$scope.saveChanges(subscriptions);
return isValidated;
};
【问题讨论】:
-
$scope.resourceDataForm 是什么样的?你有机会用 plunker 或其他东西做一个演示吗?
-
为什么要将 resourcesValidation 放在全局函数中,而不是放在模块的控制器中?
-
在resourcesValidation函数中下断点,查看
$scope.resourceDataForm。$scope.resourceDataForm.$error.required是一个数组吗?它的项目是否具有$name属性?你能发布整个对象的样子吗? -
是的,Jerrad 那是一个数组。第一个元素有一个 $name 属性,它具有以下值:{{subscriptionResource.Name}},我认为 angularjs 的 ng-required 验证在绑定之前使用控件的名称。
标签: javascript angularjs input angularjs-directive