Angularjs 为什么角度集未定义为空ng模型字段
我在Angular(1.2)和Laravel(4.2)中有简单的积垢应用。对于简单的积垢操作,我使用了有效的雄辩方法:Angularjs 为什么角度集未定义为空ng模型字段,angularjs,laravel,angular-resource,Angularjs,Laravel,Angular Resource,我在Angular(1.2)和Laravel(4.2)中有简单的积垢应用。对于简单的积垢操作,我使用了有效的雄辩方法: $product->fill(Input::all()); 它从请求有效负载中获取所有字段,但当我需要使用空字段更新模型时是否存在问题 在编辑操作中,我有一个表单,其中填写了我的服务$resource get method的响应: adminModule.factory 'Product', ($resource) -> $resource '/admin/p
$product->fill(Input::all());
它从请求有效负载中获取所有字段,但当我需要使用空字段更新模型时是否存在问题
在编辑操作中,我有一个表单,其中填写了我的服务$resource get method的响应:
adminModule.factory 'Product', ($resource) ->
$resource '/admin/products/:id', { id: '@id' }, {
query: { method: 'GET', isArray: false }
update: { method: 'PUT' }
}
控制器:
adminModule.controller 'ProductFormEditController', ($scope, Product, $stateParams) ->
$scope.formData = Product.get({id: $stateParams.id})
和html:
<input type="text" data-ng-model="formData.name" name="name" class="form-control" id="name"
placeholder="Nazwa" data-server-error required>
如果我清除此字段值并提交$scope.formData的值设置为undefined且PUT请求中未包含该值,则Laravel model fill方法无论如何都不会看到该字段,也不会为验证设置空值,而是获取模型的原始值
问题是:如何从ngModel发送空字符串而不是未定义的
p、 如果输入类型是Textarea$resource send empty“”字符串:-/,因此我很困惑…当您在输入上有“required”指令时,将永远不会设置空值(因此它将未定义)
请参阅源代码(“input.js文件中的requiredDirective”),当输入为空时,没有检索到要存储在模型中的值:
if (attr.required && ctrl.$isEmpty(value)) {
ctrl.$setValidity('required', false);
return;
} else {
ctrl.$setValidity('required', true);
return value;
}
无论如何,这是一个有点奇怪的用例:您确实希望客户端验证,但仍然希望向服务器提交无效值,对吗
我想您可以编写自己的验证(“我的要求”)来实现这一点
或者,您可以在将数据发布到服务器之前复制默认值,例如使用lodash(或下划线):
_.defaults(formData,{name:}) 您可以配置angular来设置您的模型,即使属性
allowInvalid
来自ngModelOptions
的值无效
allowInvalid
:布尔值,表示可以使用未正确验证的值来设置模型,而不是将模型设置为未定义的默认行为
例如:
<input
type="text"
ng-model="myvalue"
ng-model-options="{ allowInvalid: true }"/>
我需要输入所需的属性以进行角度表单验证。。。是的,我在表单标签上有novalidate,它没有帮助。不幸的是,这不是angular中“required”的工作方式。查看我编辑的答案。完美-我想知道为什么每次验证失败时,我的模型都被设置为未定义
!这解决了问题。谢谢不适合我