在AngularJS中将空文本而不是null设置为ng-model

时间:2014-09-10 10:02:46

标签: javascript angularjs angular-ngmodel

我需要从用户那里获得大约14个不同的输入值来创建产品,并且输入不应该作为null在控制器中接收,而应该作为空字符串

为实现这一目标,我做了以下事情: 的控制器:

var NewProductCatalog = {
    CustomerGuid: '00000000-0000-0000-0000-000000000000', SalesPartNo: "", Description: "",
    Name: "", Inventory: 0, UnitPrice: 0, BrandNo: "", TypeNo: "", LobNo: "", BrandName: "",
    TypeName: "", LobName: "", ManufacturePartNo: "", InventoryPartNo: "", EANCode: "",
    ImageURL: "", ProductType: "", DateAdded: "", Active: false, Tax: 0
};
$scope.newProductCatalog = NewProductCatalog;

.cshtml:

 <label for="SalesPartNo">Sales Part No *</label>
 <input type="text" required name="SalesPartNo" ng-model="newProductCatalog.SalesPartNo" class="form-control" />
 ...
 <input type="submit" ng-click="createProductCatalog(newProductCatalog)" />

创建功能(控制器):

$scope.createProductCatalog = function (NewProductCatalog) {
        var JsonString = angular.toJson(NewProductCatalog);
        CustomProductsServices.ProductCatalog_create(JsonString, function (callback) {
            if (callback.success) {
                $window.alert(callback.message);
            } else {
                $window.alert(callback.message);
            }
        });
    };

这允许我在用户没有输入任何值时发送空字符串。

问题: 当我尝试在文本框中输入值,然后删除/清空文本框并提交。 我无法在生成的JSON字符串中看到SalesPartNo

请指出错误,如果我的方法是错误的,建议我采用更好的方法

2 个答案:

答案 0 :(得分:1)

除非值有效,否则请删除<input name="SalesPartNo" />所需的属性,因为angularjs不会绑定到模型。

请在这里演示http://jsbin.com/wuhipe/1/edit?html,console,output

<input type="text"  name="SalesPartNo" ng-model="newProductCatalog.SalesPartNo" class="form-control" />

答案 1 :(得分:0)

您可以使用默认值扩展JsonString,例如,angular has extend方法。 制作一份NewProductCatalog,比如NewProductCatalogCopy,然后再做

angular.extend(NewProductCatalogCopy , JsonString);