Я пытаюсь динамически добавлять новые параметры списка в список. GetItem ("newCompany") получает данные массива из локального хранилища. Это хорошо работает. Но я не могу вставить newCompany.name в массив $ scope.companies. Я пытаюсь динамически добавлять новые параметры списка «Huawei и Asus».
var newCompany = [{
name: "Huawei", // -->COMPANY NAME
email: "[email protected]",
phone: "123-123-1234",
owner: "Drath",
street: "Gin Blvd",
city: "Austin",
country: "USA",
duns:"123112321",
type: "buyer"
},
{
name: "Asus", // -->COMPANY NAME
email: "[email protected]",
phone: "999-123-8888",
owner: "Vadar",
street: "Vince Blvd",
city: "Dallas",
country: "USA",
duns: "123100000",
type: "supplier"
}];
window.localStorage.setItem("newCompany", JSON.stringify(newCompany));var myApp = angular.module("myApp", []);
myApp.controller("myController", function ($scope) {
$scope.companies = ["Apple", "Oneplus", "Samsung"];
var newCompany = JSON.parse(localStorage.getItem("newCompany"));
$scope.newComp = {};
$scope.newComp.push(newCompany.name);
$scope.companies.push($scope.newComp);
});<select class = "form-control" name = "addCompany" placeholder = "Select Company" ng-options = "company for company in companies">
</select>Пуш работает только для массива. Превратите ваш объект newComp в объект Array.
возможно, это должно помочь: stackoverflow.com/questions/30484653/…
@BartoszTermena Ну, я изменил newComp = {}; к [];. Тем не менее, это не работает.


Соответствуют ли типы данных?
$scope.companies содержит строки, поэтому попробуйте добавить строку с названием компании вручную.
Кроме того, ng-options = "company for company in companies" - я не уверен, что использование одного и того же имени переменной дважды сработает. ng-options обычно используется для сохранения компании объекты в companies, так что ng-модель выбранного будет содержать выбранную компанию:
<select ng-model = "selectedCompany" ng-options = "item.label for item in companies"></select>
Я удивлен, что ваша консоль не уперлась в этом - у объектов нет метода push.