Значение по умолчанию angularJS для ng-модели
Возможно ли, чтобы ng-модели получили значения по умолчанию, например ''
?
У меня есть форма, на которой я использовал функцию jQuery serialize
, и всякий раз, когда какое-либо значение отсутствует, оно все равно будет включать ее в сериализованные данные, например. {name: '', age: ''}
.
Однако, когда я использую try, используя его проводку, используя Angular $http
и получая модель от $scope
, она появляется как undefined
, когда она пуста.
Ответы
Ответ 1
Вы можете просто определить свойства модели в области перед их использованием в своем представлении.
Если вы укажете свой код контроллера, я покажу вам, что вам нужно обновить, чтобы добавить их в область.
Он должен выглядеть примерно так:
В вашем js файле, который определил приложение
angular.module("MyModule", []).controller('MyCtrl', ['$scope', function ($scope) {
$scope.myModel = {name:""};
}]);
В вашем HTML
<input type="text" ng-model="myModel.name"/>
Примечание Я предпочитаю не иметь глобальных переменных/функций, поэтому я использую другой синтаксис, предоставленный Angular, чтобы избежать этого и разрешить мини-настройку.
Ответ 2
Вы также можете попробовать:
<div ng-init="foo={}">
<input type="text" ng-model="foo.name=''"/>
</div>
или
<input type="text" ng-init="foo.name=''"/>
он представит:
foo = { name: '', .... }
Ответ 3
Вам не нужно использовать сериализацию jQuery.
Ваша форма должна быть привязана к области видимости следующим образом:
<form ng-controller="MyCtrl" ng-submit="submit()">
<input type="text" name="name" ng-model="formData.name">
<input type="text" name="age" ng-model="formData.age">
<input type="submit" value="Submit Form">
</form>
function MyCtrl($scope) {
$scope.formData = {};
$scope.submit = function() {
$http.post('/someUrl', $scope.formData)
};
}
Так что в $http вы можете просто передать $scope.formData.
Есть ли более эффективный способ сериализации формы с помощью angularjs?
Ответ 4
Иногда вы не знаете, установлено ли значение или нет. Для чего нужны значения.
Я использую это, когда мне нужно убедиться, что переменная имеет некоторое значение. Вы можете установить его в своем контроллере
$scope.possiblyEmptyVariable = $scope.possiblyEmptyVariable || "default value";
Отлично работает без Angular
// some object that may or may not have a property 'x' set
var data = {};
// Set default value of "default"
// carefull, values like 'null', false, 0 will still fall to defaults
data.x = data.x || "default";
// Set default value of "default"
// this will not fall to defaults on values like 'null', false, 0
data.x = !"x" in data || "default";
Если вам нужно установить кучу значений, используйте angular.extend или jQuery.extend
data.z = "value already set";
var defaults = { x: "default", y: 1, z: "default" };
var newData = angular.extend({}, defaults, data);
// { x: "default, y: 1, z: "value already set" }
Надеюсь, что поможет