2016-10-04 39 views
0

我正在嘗試爲loadAllOriginal創建一個類似的JavaScript函數。 但是,變量allEmployees的值是一個包含emplooyee對象(ID,FirstName,LastName)的列表。如何才能做到這一點? 我想使用此方法從該頁面自動完成: https://material.angularjs.org/latest/demo/autocomplete嘗試創建類似於預先存在的JavaScript函數

function loadAllOriginal() 
{ 
    var allEmployees = 'Alabama, Alaska, Arizona, Arkansas, California, Colorado, Connecticut, Delaware,\ 
    Florida, Georgia, Hawaii, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana,\ 
    Maine, Maryland, Massachusetts, Michigan, Minnesota, Mississippi, Missouri, Montana,\ 
    Nebraska, Nevada, New Hampshire, New Jersey, New Mexico, New York, North Carolina,\ 
    North Dakota, Ohio, Oklahoma, Oregon, Pennsylvania, Rhode Island, South Carolina,\ 
    South Dakota, Tennessee, Texas, Utah, Vermont, Virginia, Washington, West Virginia,\ 
    Wisconsin, Wyoming'; 

    return allEmployees.split(/, +/g).map(function (employee) 
    { 
     return 
     { 
      value: employee.toLowerCase(), 
      display: employee 
     }; 
    }); 
} 

function loadAll() 
{ 
    var allEmployees = $http.post('../Admin/GetUsers/'); 
    .......... 
} 
+0

類似的如何?你是否問過如何從第一個職能中獲得僱員,這應該是直截了當的,因爲當你打電話給僱員時,會看到這些職業? – adeneo

+0

底部函數loadAll需要像loadAllOriginal一樣執行相同的操作。 – user6440175

+0

通過發佈請求收到的數據的結構是什麼? JSON? –

回答

0

好了,所以我做了你知道怎麼去裝入allEmployees變量記錄的壞的假設。我已經更新了我的答案,包括如何從異步函數調用中獲取數據,然後才能夠使用該數據。

您可以通過使用延遲對象並從loadAll()函數返回承諾來實現此功能。這可以使用內置於角度的$ q服務完成。這裏有一個方法來實現它:

function loadAll() { 
    return $q(function (resolve, reject) { 
     $http.post('../Admin/GetUsers/').then(function successCallback(response) { 
      resolve(response.data.map(function (employee, index) { 
       return { 
        value: employee.ID, 
        display: employee.FirstName + " " + employee.LastName 
       } 
      })); 
     }, function failureCallback(response) { 
      reject("Error!"); 
     }); 
    }); 
} 
var allEmployees = []; 
loadAll().then(function success(employees) { 
    allEmployees = employees; 
}, function failure(message) { 
    console.log(message); 
    allEmployees = []; 
}).then(function(){ 
    console.log(allEmployees); 
    // rest of your code that uses the allEmployees variable goes here... 
}); 
+0

謝謝。我得到以下錯誤:「TypeError:allEmployees.map不是一個函數」 – user6440175

+0

不要只是分發代碼,沒有任何解釋。另外,'$ http.post'是異步的,不返回數組。 –

+0

這不會起作用,因爲調用是異步的,不會馬上返回。事實上,它可能不會返回任何東西 – putvande

相關問題