【问题标题】:socket.io + angularjs + ui-router - data goes missing after changing statessocket.io + angularjs + ui-router - 改变状态后数据丢失
【发布时间】:2014-08-17 06:18:01
【问题描述】:

我正在使用 mssql > node.js > socket.io > angularjs/ui-router/angular-socket-io 堆栈。

我的问题是我第一次访问显示数据的状态,或者刷新时,数据显示没有问题。但是,当更改状态并返回时,数据会消失。

使用 npm + express 中的 mssql 我正在发出这样的数据

io.sockets.on('connection', function (socket) {

    // Run db query on inital app start
    sql.connect(config, function(err) {

        if (err) {

        console.log('There was an error connectiong to sql:');
        console.log(err);

        } else {

            var request = new sql.Request();

            request.query('SELECT * from a.dbo.b', function(err, recordset) {

                if (err) {
                    console.log('There was an error with the query:' + err);
                }

                socket.emit('data', recordset);

            });
        }

    });

});

我有一个这样的工厂

.factory('socket', function (socketFactory) {

    var socket = io.connect(window.location.hostname);
    return socket;

})

在控制器中我有这个

socket.on('data', function (data) {

    // WHOLE bunch of logic manipulating the data.....

    $scope.ctrlData = finalRecordObj;
    $scope.$digest();

);

状态然后使用 ng-repeat 循环出 $scope.ctrlData 的数据

在刷新或第一次查看状态时数据很好....在我进入另一个状态并回来之后它就消失了!任何想法将不胜感激。希望以上信息足够。

【问题讨论】:

    标签: node.js angularjs websocket socket.io angular-ui-router


    【解决方案1】:

    你应该保持你的数据在服务中以防止它消失,现在发生的事情是在刷新页面上启动控制器和服务(服务操作系统单例)然后它返回数据,但是当你改变状态控制器是刷新但不是服务,所以来自控制器的数据丢失并且服务不会提供新的,因为它已经提供了,希望这是有道理的

    【讨论】:

    • 您好,感谢您的回答,所以如果我理解正确您的说法,我应该在控制器中拥有我目前拥有的东西(socket.on('data......)我应该在其中拥有它我的工厂并退货?
    猜你喜欢
    • 2016-06-03
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多