2016-10-04 5 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変数にロードされたレコードを取得する方法を知っていた悪い仮定をした: 私は、このページからオートコンプリート機能で、このメソッドを使用しようとしています。私は非同期関数呼び出しからデータを取得し、その後そのデータを使用する方法を含むように答えを更新しました。

これを動作させる方法の1つは、遅延オブジェクトを使用し、loadAll()関数から約束を返すことです。これは、角度に組み込まれた$ qサービスを使用して行うことができます。これを実装する1つの方法は次のとおりです。

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

関連する問題