从ExpressJS服务器读取数据,以显示在angular-smart-table的pipe / ajax插件中

时间:2015-07-22 20:06:11

标签: javascript angularjs ajax express smart-table

我想做什么? 我正在努力学习Javascript& MEAN堆栈通过开发一个简单的Web应用程序。在该应用程序中,我正在尝试使用以下规范在Web应用程序中使用angular-smart-table的“pipe / ajax插件”: 客户端:AngularJS 服务器端:ExpressJS / NodeJS (使用Yeoman发电机“generator-angular-fullstack”创建)

我面临的挑战: 我在我的网络应用程序中复制/粘贴智能表documentation中给出的pipe / ajax插件示例。此示例具有要在客户端(工厂)的智能表中显示的值。我想将这些值移动到可通过REST API端点$ http.get('/ api / smartTableServer')访问的服务器控制器文件(plunker中的smartTableServer.controller.js)。

到目前为止我取得了什么成就? 我能够成功地将服务器控制器文件中的数据读入客户端工厂文件(smartTableClient.service.js)。但是当我将它存储在变量(randomsItems)中时,变量的值是“未定义的”。我相信http get调用会在稍后执行。因此变量randomsItems仍然没有从服务器获取值。你能帮我解决这个问题吗? (即)从服务器控制器JS&获取randomsItems的值。在视图中显示它。

我的文件的Plunker与此问题相关:

`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=catalogue

请注意: 我仍然不知道异步脚本如何工作&因此不知道推迟和承诺概念,我认为是我面临上述问题的原因。我还在学习基础知识。求助。

1 个答案:

答案 0 :(得分:3)

function getRandomItems()必须接受必须在success $http.get('/api/smartTableServer', { cache: 'true'})的{​​{1}}方法中调用的回调:

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
function getRandomItems()

此处有更多文档:$http General usage