2013-05-31 3 views
3

Я передаю пользовательский ввод функции контроллера, но пустые строки не объявляют свойства объекта.ng-model undefined с пустыми строками?

<form> 
    <input type="text" ng-model="data.location" /> 
    <input type="text" ng-model="data.radius" /> 
    <button type="button" ng-click="getSearch(data)">Search</button> 
</form> 

$scope.getSearch = function(data) { 
    console.log(data); 
    //undefined 
    //...but what if I want {location:'', radius:''} 
}; 

Есть ли способ принудительно создать свойства объекта при передаче пустых строк на лету?

ответ

4

Вы должны иметь возможность инициализировать data.location и data.radius в своем контроллере до '', по крайней мере таким образом они не определены.

+0

Конечно, но это единственный способ? Невозможно заставить его на лету? –

+0

@DanKanze иначе объект не будет инициализирован только при редактировании текстового поля –

+0

ng-init = {data: {location: '', radius: ''} "сделал бы трюк, но тот же, что и в контроллере – Mephiztopheles

3

Вам необходимо получить к нему доступ как $scope.data, а не только data.

Также вам не нужно передавать его в качестве аргумента для вашего getSearch(). models привязаны к $scope и должны быть доступны через $scope

+0

Спасибо за это делает больше, чем то, что я делал. –

Смежные вопросы