使用 Angular 保留模型中的空字段
Preserve empty field in model with Angular
如果我有这样的 angular 表格
<form name="myForm">
<input type="text" required ng-model="field1" />
<input type="text" ng-model="field2" />
</form>
当我访问模型时,它只会保存那些有值的字段,所以如果两个字段都有值,json 将是 {"field1":"value1","field2" :"value2"}。如果只有 field1 有一个值 json 将是 {"field1":"value1"}。我可以指示 Angular 将模型中的空字段保留为空值吗?
更新:
我的控制器如下所示。我正在从服务器加载数据为 json。当数据来自服务器时,我得到这个 {"field1":"value1","field2":"value2"} 但是当运行 saveContent 并且只有 field1 有一个值时,服务器得到这个{"field1":"value1"}。
var myApp = angular.module('myApp', []);
myApp.controller('contentEditController', ['$scope', '$http',
function ($scope, $http) {
$scope.saveContent = function () {
$http.post("/api/ContentData", $scope.formdata);
};
$scope.loadContent = function (contentId) {
$http.get("/api/ContentData/" + contentId)
.success(function (response) {
$scope.formdata = response;
});
}
}]);
因此,当来自服务器时具有值的字段不会被发送回空值。
-马蒂亚斯
正确的做法是初始化变量。你应该在你的控制器中有
$scope.field1 = ""
$scope.field2 = ""
或者更粗略的方法是使用 ng-init(如果可以,尽量不要使用 ng-init)
<input type="text" required ng-model="field1" ng-init="field1=''"/>
<input type="text" ng-model="field2" ng-init="field2=''"/>
初始化控制器范围内的值,
.controller('formcontroller', [ '$scope', function($scope){
$scope.field1 = "";
$scope.field2 = "";
})];
如果我有这样的 angular 表格
<form name="myForm">
<input type="text" required ng-model="field1" />
<input type="text" ng-model="field2" />
</form>
当我访问模型时,它只会保存那些有值的字段,所以如果两个字段都有值,json 将是 {"field1":"value1","field2" :"value2"}。如果只有 field1 有一个值 json 将是 {"field1":"value1"}。我可以指示 Angular 将模型中的空字段保留为空值吗?
更新:
我的控制器如下所示。我正在从服务器加载数据为 json。当数据来自服务器时,我得到这个 {"field1":"value1","field2":"value2"} 但是当运行 saveContent 并且只有 field1 有一个值时,服务器得到这个{"field1":"value1"}。
var myApp = angular.module('myApp', []);
myApp.controller('contentEditController', ['$scope', '$http',
function ($scope, $http) {
$scope.saveContent = function () {
$http.post("/api/ContentData", $scope.formdata);
};
$scope.loadContent = function (contentId) {
$http.get("/api/ContentData/" + contentId)
.success(function (response) {
$scope.formdata = response;
});
}
}]);
因此,当来自服务器时具有值的字段不会被发送回空值。
-马蒂亚斯
正确的做法是初始化变量。你应该在你的控制器中有
$scope.field1 = ""
$scope.field2 = ""
或者更粗略的方法是使用 ng-init(如果可以,尽量不要使用 ng-init)
<input type="text" required ng-model="field1" ng-init="field1=''"/>
<input type="text" ng-model="field2" ng-init="field2=''"/>
初始化控制器范围内的值,
.controller('formcontroller', [ '$scope', function($scope){
$scope.field1 = "";
$scope.field2 = "";
})];