首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebSocket消息回调和Knockout JS视图模型通信

WebSocket消息回调和Knockout JS视图模型通信
EN

Stack Overflow用户
提问于 2017-05-26 20:15:14
回答 1查看 182关注 0票数 0

我需要使到KnockoutJS的组件视图模型的WebSocket连接的"onmessage“回调函数中的数据可用。

代码语言:javascript
复制
sockjs.onmessage = function (e) {
        //console.log('[.] message', e.data);
        if(e.data && e.data.length){
            var jsonData = JSON.parse(e.data);

            //I need to make this jsonData available to Custom Component of knockoutJS

        }

    };

但是这里的问题是,我没有在我的代码中创建ViewModel的实例。我正在使用KnockoutJS的自定义组件,并通过以下代码对其进行注册

代码语言:javascript
复制
ko.components.register('bing-map', {
        viewModel: { require: 'bing-maps/bing-maps' },
        template: { require: 'text!bing-map/bing-map.html' }
    });

我的组件的视图模型如下

代码语言:javascript
复制
define(['knockout'], function(ko){
var MapViewModel = function(params){
    var self = this;
    self.map = {
        options:{
            credentials:<bing map key>
        }
    }
}
return MapViewModel;
});
EN

回答 1

Stack Overflow用户

发布于 2017-05-27 00:48:35

将本地可观察对象或视图模型传递给自定义组件

并在套接字事件上更新本地观察值(这将更新组件)

代码语言:javascript
复制
ko.components.register('bing-map', {
  viewModel: MapViewModel,
  template: '<div data-bind="foreach: data"><div data-bind="text: $data"></div></div>'
});


function MapViewModel(params) {
  var self = this;
  self.map = {
    options: {
      credentials: params.other
    }
  };
  debugger;
  self.data = params.data;
}

// it could a ViewModel or just a global observable
var dynamicData = ko.observableArray([Number(new Date())]);
ko.applyBindings();


// socket.io simulation
var timer = 0;
var si = setInterval(function() {
  dynamicData.push(Number(new Date()));
  timer++;
  // clear after 10 intervals
  if(timer > 9) clearInterval(si);
}, 2000);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<bing-map params="data: dynamicData, other: 123"></bing-map>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44201365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档