2015-01-07 4 views
1

Если у меня есть угловая форма, как этотсохранить пустое поле в модели с угловыми

<form name="myForm"> 
 
    <input type="text" required ng-model="field1" /> 
 
    <input type="text" ng-model="field2" /> 
 
</form>

Когда я достигаю модель будет содержать только те поля, которые имеют значение, так что если оба поля имеют значения json будут {"field1": "value1", "field2": "value2"}. Если только поле1 имеет значение json, будет {"field1": "value1"}. Могу ли я инструктировать Угловое сохранить пустые поля в модели с нулевыми значениями?

UPDATE:

Мой контроллер выглядит, как показано ниже. Я загружаю данные как json с сервера. Когда данные поступают с сервера, я получаю это {"field1": "value1", "field2": "value2"}, но когда saveContent запущен и только поле1 имеет значение, сервер получает это {"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

ответ

3

Инициализировать значения на объем в контроллере,

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

Спасибо за ответ. Что делать, если у меня нет таких значений отдельно, как я добавил обновленный вопрос? – MathiasR

+0

Пока вы используете директиву ng-model для привязки полей формы к области видимости, вы все равно сможете их инициализировать отдельно, и вы должны, если это поле необходимо для вызова на сервер. – MikeDev

1

Правильный способ сделать это, чтобы инициализировать переменные. Вы должны в контроллере есть

$scope.field1 = "" 
$scope.field2 = "" 

или более сырой способ сделать это, чтобы использовать нг-Init (старайтесь не использовать нг-инициализации, если вы можете)

<input type="text" required ng-model="field1" ng-init="field1=''"/> 
<input type="text" ng-model="field2" ng-init="field2=''"/> 
Смежные вопросы