2016-02-29 4 views
0

Как получить значение от объекта, сгенерированного с помощью ввода, используя ng-модель для использования в моем скрипте, а не как ключ, так и значение?

Так близко к решению этой проблемы в настоящее время, которая простирается от моего предыдущего вопроса здесь Get a value from input to use in controller Angular JS

Я, наконец, удалось предотвратить одно значение ввода в таблице (используя нг-повтор) от показа в каждом одинаковом месте для каждая строка, используя следующий код:

<input data-ng-model="newEmail[$index]" type="text" id="newEmail" maxlength="254" pattern="[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3}$" size="20" class="form-control" placeholder="{{user.email}}"> 

в принципе, мне нужно, чтобы получить значение, введенное с нг-модели для использования в мой контроллер, который я в настоящее время используется как это:

$scope.newEmail = {}; 

$scope.updateProfile = function (profile) { 
    setTimeout(function() { 
     console.log('New email is: ', $scope.newEmail); 
    }, 1000); 
}; 

Проблема, которую я получаю, заключается в том, что она возвращает объект как {1: 'любой текст вводится здесь}} из окна ввода. Тогда я просто не могу получить значение из объекта, чтобы обновить значение в Firebase, поскольку он записывает как ключ, так и значение в местоположение Firebase, к которому я пытаюсь написать.

Должен быть супер простой способ получить только то значение, которое у меня отсутствует?

+0

Попробуйте использовать массив INSEAD объекта '$ scope.newEmail = []' – jcubic

+0

Легенда !!! Он работает и что-то настолько простое, что я должен был попробовать массив insteaf объекта! Спасибо, пожалуйста, напишите как ответ, и я соглашусь! –

+0

Я боюсь сказать, что это не сработает :(. Кажется, если я нажму на первую строку, введите значение, нажмите кнопку «Моя кнопка», я получу значение. Однако, когда я ввожу последующие значения в ящики ввода, он содержит пустые слоты. –

ответ

0

Поле ввода не возвращает объект. Это потому, что вы не назначаете ng-model так же, как $scope.newEmail, а $scope.newEmail[$index]. Вот почему вы получаете {1: '...'}, когда получаете $scope.newEmail, и это правильно.

Я не знаю, что вы используете дело, но почему вы инициализацию newEmail как объект, а не просто:

$scope.newEmail = null 

, а затем назначьте его:

ng-model="newEmail" 
+0

Он использует '$ index', поэтому он, вероятно, использует' ng-repeat'. – jcubic

+0

Спасибо за быстрый ответ. Я пробовал только $ scope.newEmail = null, а возвращаемое значение пусто когда я вхожу в консоль. Я также попробовал «newEmail» на своем собственном и до сих пор не повезло. Причина, по которой я должен был инициализироваться как объект, из-за вышеизложенного попытался сделать это раньше (и снова сейчас), а также из-за того, что у меня есть поле ввода, предварительно заполненное значением-заполнителем из массива, который содержит существующий адрес электронной почты от пользователя {{user.email}}. –

+0

Можете ли вы сделать pinkr или jsfiddle, чтобы я мог попробовать? себя? – martin

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