当我使用ko.mapping.toJSON它时,我将所做的任何更改转换为字符串,它们需要是数字.我尝试使用自定义映射,如下所示:
var mapping = {
'y': {
update: function(options) {
return parseFloat(options.data);
}
}
}
Run Code Online (Sandbox Code Playgroud)
...但这只会将它们作为数字保留在页面的内容中.由于我使用它来更新和由HighCharts.js引入的外部JSON,因此即使在toJSON之后,数字也需要保留数字.
从之前的答案我可以使用:
//override toJSON to turn it back into a single val
mappedData.prototype.toJSON = function() {
return parseInt(ko.utils.unwrapObservable(this.val), 10); //parseInt if you want or not
};
Run Code Online (Sandbox Code Playgroud)
...游泳工作.但是这只是JSON中的单个值类型,因此我不清楚如何使用相同的覆盖.我是否还需要在此实例中创建一个全新的对象来执行此操作.或者他们的东西更简洁?
这有点边缘情况,但了解它会有所帮助。
在使用 webpack-dev-server 开发扩展以保持扩展代码最新时,听“webpackHotUpdate”会很有用
带有内容脚本的 Chrome 扩展程序通常有两个方面:
当使用带有 HMR 的 webpack-dev-server 时,后台页面保持同步就好了。但是,内容脚本需要重新加载扩展以反映更改。我可以通过监听来自 hotEmmiter 的“webpackHotUpdate”事件然后请求重新加载来解决这个问题。目前,我以一种可怕且非常不可靠的hacky方式进行这项工作。
var hotEmitter = __webpack_require__(XX)
hotEmitter.on('webpackHotUpdate', function() {
console.log('Reloading Extension')
chrome.runtime.reload()
})
Run Code Online (Sandbox Code Playgroud)
XX 仅表示当前分配给发射器的编号。正如您可以想象的那样,每当构建发生变化时,这都会发生变化,因此这是一种非常临时的概念证明。
我想我可以设置我自己的套接字,但这似乎有点矫枉过正,因为事件已经被转移,我只是想听听。
我最近才对 webpack 生态系统更加熟悉,因此非常感谢任何指导。