2014-10-08 2 views
0

Я пытаюсь добавить новое значение в существующий объект JSON в AngularJS, но я получаю сообщение об ошибке:«Объект не поддерживает свойство или метод" толчок»

"Object doesn't support property or method 'push'" 

Вот мой код :

$scope.addStatus = function (text) {   
      $scope.application.push({ 'status': text }); //I have tried 'put' but getting the error 
     }; 

$scope.create = function(application){ 
     $scope.addStatus('Under review'); 
} 

вот мое приложение JSON выглядит следующим образом:

{"type":"Not completed","source":"mail","number":"123-23-4231","amount":"234.44","name":"John ","id":"123","by_phone":true} 

Я хочу, чтобы добавить/добавить статус к выше JSON и что-то Похоже, после добавления статуса собственности:

{"type":"Not completed","source":"mail","number":"123-23-4231","amount":"234.44","name":"John ","id":"123","by_phone":true, "status": "under review"} 
+0

Где $ scope.application определяется? Если это не массив, то ваш код не сработает. – sma

+0

@psl: как вы помечаете это как дубликат? помочь объяснить? –

+2

Потому что, если вы прочтете ответ, вы узнаете. Это просто сформулировано по-разному. Вы должны, по крайней мере, приложить некоторые усилия, чтобы узнать, что означает сообщение об ошибке, для начала (вместо того, чтобы вставлять ошибку из консоли в вопрос) ... Мне жаль, что я не думаю, что это не так, дублировать. Надеюсь, это объяснит. – PSL

ответ

2

.push() является методом массива JS.

Но приложение - это всего лишь объект (не массив). Здесь мы можем использовать только:

// instead of this 
// $scope.application.push({ 'status': text }); 
// use this 
$scope.application.status = text; 
1

Array.prototype.push предназначен только для массивов. Добавьте свойство в одном из следующих способов:

$scope.application['status'] = text; 

Или:

$scope.application.status = text; 
Смежные вопросы