Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Получаю ошибку: Error: missing ; before statement (https://javascript.ru/forum/angular/67618-poluchayu-oshibku-error-missing-%3B-before-statement.html)

okuznetsov1 27.02.2017 18:45

Получаю ошибку: Error: missing ; before statement
 
Не работает вот такая вот запись?:

str = '{id: 4,image: "path",dessert: "text",calories: 100,fat: 10,comments: "comment"}';

$scope.dataTableTbody.push(eval(str));


Массив js-объектов:

$scope.dataTableTbody = [
        {
            id: 11,
            image: '/images/placeholder/1-square.jpg',
            dessert: 'Frozen yogurt',
            calories: 159,
            fat: 6.0,
            comments: 'Lorem ipsum'
        },
        {
            id: 13,
            image: '/images/placeholder/3-square.jpg',
            dessert: 'Eclair',
            calories: 262,
            fat: 16.0,
            comments: 'Lorem ipsum'
        }];



А вот если делаю так:


$scope.dataTableTbody.push(eval('[' + str + ']'));


то объект добавляется в массив, но в таком виде:

Array [ Object, Object, Object, Array[1] ]

где в Array[1] соответственно содержится наш Object


Нужно сделать, чтобы $scope.dataTableTbody в итоге был таким:
Array [ Object, Object, Object, Object ]

destus 27.02.2017 19:02

$scope.dataTableTbody.push(eval('...[' + str + ']'));

okuznetsov1 27.02.2017 19:36

Цитата:

Сообщение от destus (Сообщение 445753)
$scope.dataTableTbody.push(eval('...[' + str + ']'));

не совсем понял, что вы предлагаете.

сделал таким образом, всё заработало:

$scope.dataTableTbody = $scope.dataTableTbody.concat( eval('[' + str + ']') );

destus 27.02.2017 19:40

okuznetsov1,
Вот так точнее.
$scope.dataTableTbody.push(...eval('[' + str + ']'));

Spread оператор.

okuznetsov1 27.02.2017 22:13

Цитата:

Сообщение от destus (Сообщение 445757)
okuznetsov1,
Вот так точнее.
$scope.dataTableTbody.push(...eval('[' + str + ']'));

Spread оператор.

погуглил, понял. в общем я с EcmaScript 5 работаю


Часовой пояс GMT +3, время: 22:07.