使用Angular保留模型中的空白字段

时间:2015-01-07 07:36:54

标签: angularjs angularjs-model

如果我有这样的角形

<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;
               });
      }

  }]);

因此,当它们来自服务器时具有值的字段不会被返回为空。

-Mathias

2 个答案:

答案 0 :(得分:3)

初始化控制器中作用域的值,

.controller('formcontroller', [ '$scope', function($scope){
  $scope.field1 = "";
  $scope.field2 = "";
})];

答案 1 :(得分:1)

执行此操作的正确方法是初始化变量。您应该在您的控制器中

$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=''"/>