3

私は何をしようとしていますか? 簡単な Web アプリケーションを開発して Javascript と MEAN スタックを学ぼうとしています。そのアプリケーションでは、以下の仕様の Web アプリで angular-smart-table の「pipe/ajax プラグイン」を使用しようとしています。 -angular-fullstack")

私が直面している課題: Web アプリのスマート テーブルドキュメントに あるパイプ/ajax プラグインの例をコピーして貼り付けました。この例には、クライアント側 (工場) のスマート テーブルに表示される値があります。これらの値を、REST API エンドポイント $http.get('/api/smartTableServer') からアクセスできるサーバー コントローラー ファイル (plunker 内の smartTableServer.controller.js) に移動したいと考えています。

これまでに私が達成したことは何ですか? サーバー コントローラー ファイルからクライアント ファクトリ ファイル (smartTableClient.service.js) にデータを正常に読み取ることができました。ただし、変数(randomsItems)に格納すると、変数の値は「未定義」になります。http get 呼び出しは後で実行されるため、変数 randomsItems はまだサーバーから値を取得していないと思います。この問題を解決するのを手伝ってもらえますか? (ie) サーバーコントローラー JS から randomsItems の値を取得し、ビューに表示します。

この問題に関連するファイルのプランカー:

`angular.module('myApp').factory('Resource', ['$q', '$filter', '$timeout', '$http', function ($q, $filter, $timeout, $http) {

    //this would be the service to call your server, a standard bridge between your model an $http
// the database (normally on your server)

function getrandomsItems() {  

     var defer = $q.defer();

     $http.get('/api/smartTableServer', { cache: 'true'}).success(

            function(randomsItems) {

                defer.resolve(randomsItems);

                //randomsItems = angular.fromJson(randomsItems);

                //console.log("Success - randomsItems : " + randomsItems);                    
                //console.log("Success - randomsItems.Stringify : " + JSON.stringify(randomsItems));

                return defer.promise;
            }                             
        );

    return defer.promise;
}

function getPage(start, number, params) {

var randomsItems = getrandomsItems(); // This method call returns the value as undefined!!!
...      `

http://plnkr.co/edit/jRdNXuVMrWaymLnxfPnE?p=カタログ

注: 非同期スクリプトがどのように機能するかはまだわかりません。したがって、上記の問題に直面している理由であると思う延期と約束の概念を知りません。私はまだ基​​本を学んでいます。親切に助けてください。

4

1 に答える 1

3

function getRandomItems()successのメソッド内で呼び出す必要があるコールバックを取得する必要があります$http.get('/api/smartTableServer', { cache: 'true'}) promise:

function getRandomItems(cb) {  
  $http.get('/api/smartTableServer', {cache: 'true'})
       .success(function(randomItems) { cb(randomItems); });
}

function getPage(start, number, params) {
  getRandomItems(function cb(randomItems) { 
    // do what you want to do with randomItems 
  };
)

promiseまたは、 fromfunction getRandomItems()および を返します。

function getRandomItems(cb) {  
  return $http.get('/api/smartTableServer', {cache: 'true'});
}

function getPage(start, number, params) {
  getRandomItems.success(function(randomItems) { 
    // do what you want to do with randomItems 
  };
)

その他のドキュメントはこちら: $http 一般的な使用法

于 2015-07-22T20:20:02.870 に答える