Javascript массив в объекте пусто при передаче в функцию

0

У меня есть веб-страница, которая открывает модальную страницу при нажатии на "редактировать". Ситуация: с помощью Angular JS ng-repeat я показываю список объектов с именем customer;

<div class="col-sm-6" ng-repeat="Cust in Customers | filter: filterCustomers">
//code omitted for clarity
<buton class="btn btn-default btn-xs" ng-click="openEditDialog(Cust);">Edit<i class="fa fa-pencil pull-right"></i></buton>

Заказчик объекта настроен таким образом;

{
"ID" : 1,
"Name" : "Test",
"City" : "Test",
"CountryCode" : "NLD",
"CurrencyCode" : "EUR",
"empAgencies" : [{
        "ID" : 1,
        "Name" : "Test",
        "NumberOfEmployees" : 0,
        "customers" : []
    }, {
        "ID" : 2,
        "Name" : "Test1",
        "NumberOfEmployees" : 0,
        "customers" : [{
                "ID" : 4,
                "Name" : "TestC",
                "City" : "Test",
                "CountryCode" : "NLD",
                "CurrencyCode" : "EUR",
                "empAgencies" : []
            }
        ]
    }
]
}

Обратите внимание, что Customer <-> EmpAgency - это много-много отношений в моем MVC, я не знаю, связано ли это с проблемой. Проблема заключается в openEditDialog (Cust); функция

 function openEditDialog(Cust) {
         $scope.editedCustomer = Cust;
         console.log($scope.editedCustomer);
         $uibModal.open({
             templateUrl: 'scripts/spa/customer/editCustomerModal.html',
             controller: 'editCustomerCtrl',
             scope: $scope
         }).result.then(function ($scope) {
             search($scope.page);
         }, function () {
             search($scope.page);
         });
     }

К этой функции передается следующий объект:

Object {ID: 1, Name: "Test", City: "Test", CountryCode: "NLD", CurrencyCode: "EUR"…}
//omitted
empAgencies:Array[0]

Как вы видите, Array, содержащий empAgencies, опорожняется по какой-то причине. Из-за этого мое выделенное свойство dropdownbox неправильно заполнено. (Содержит полный список empAgencies)

  • 0
    Вы пытались удалить фильтр filterCustomers ?
  • 0
    @Pietro Спасибо, я только что попробовал. Это ничего не меняет.
Показать ещё 1 комментарий

2 ответа

0

Я нашел решение; В моем выпадающем списке на модельной странице есть новый список empAgencies. Моя ng-модель отредактированаCustomer.empAgencies. Поскольку в моем dropdownbox ничего не выбрано, объект клиента автоматически теряет свое значение.

Я все еще должен увидеть, как я это разрешу, чтобы получить выбранное значение в моем правом выбора.

(edit) Я решил это следующим образом; Поскольку это было много-много отношений, мне пришлось сделать массивы одинаковыми:

   var array = new Array();
    for (var i = 0; i < $scope.AgencyDropDown.length; ++i) {
        array.push({
            ID : $scope.AgencyDropDown[i].ID,
            Name : $scope.AgencyDropDown[i].Name
        });
    }
    $scope.AgencyDropDownSubSet = array;
    var array1 = new Array();
    for (var i = 0; i < $scope.editedCustomer.empAgencies.length; ++i) {
        array1.push({
            ID : $scope.editedCustomer.empAgencies[i].ID,
            Name : $scope.editedCustomer.empAgencies[i].Name
        });
    }
    $scope.editedCustomer.empAgencies = array1;

Теперь объекты одинаковы, выбранный элемент будет заполнен правильно. Даже когда я добавляю новые переменные в empAgency, этот флажок будет продолжать работать.

0

просто удалите $ scope из обратного вызова:

         }).result.then(function () {
             search($scope.page);
         }, function () {
             search($scope.page);
         });
     }
  • 0
    Кажется, это ничего не меняет? массив empAgencies остается пустым. Не могли бы вы объяснить, почему это может быть решением?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню