2016-04-21 119 views
0

當點擊「編輯」時,我有一個打開模態頁面的網頁。情況: 使用Angular JS ng-repeat,我顯示了一個名爲customer的對象列表;當傳遞給函數時,對象中的Javascript數組爲空

<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" : [] 
      } 
     ] 
    } 
] 
} 

請注意,顧客< - > 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] 

正如你可以看到包含empAgencies數組被清空出於某種原因。正因爲如此我dropdownbox選擇屬性不正確填充(包含empAgencies的完整列表)

+0

你有沒有嘗試刪除過濾器'filterCustomers'? – Pietro

+0

@Pietro謝謝,我剛剛嘗試過。這沒有改變。 – Brian

+0

它看起來像陣列empAgencies只在完全加載模態頁面後才被清空。我在我的模態頁面上加載了一個Cust對象的快照,並在其中加載了所有的主管部門。我不知道這是否有任何幫助 – Brian

回答

0

剛剛從回調刪除$範圍:

  }).result.then(function() { 
      search($scope.page); 
     }, function() { 
      search($scope.page); 
     }); 
    } 
+0

這似乎沒有改變?數組empAgencies保持爲空。你能解釋爲什麼這可能是一個解決方案嗎? – Brian

0

我已經找到了解決辦法; 模態頁面上的我的dropdownbox有一個新的empAgencies列表。我的ng模型是編輯客戶。由於我的下拉框中沒有選擇任何內容,因此客戶對象會自動失去其價值。

我仍然必須看看我將如何解決這個問題,以便在我的選擇權中獲得選定的值。

(編輯)我已經通過以下方式解決了這個問題; 因爲它是一個多對多的關係,我不得不做出陣列相同的:

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添加新變量,該選擇框也會繼續工作。

相關問題