【问题标题】:How to intercept write using knockout mapping library如何使用敲除映射库拦截写入
【发布时间】:2013-06-13 18:24:33
【问题描述】:

使用knockout 和knockout mapping,我如何拦截一个属性的写入?

我尝试过的:

var data = { someBool: false, someOther: 'test value' };
var vm = ko.mapping.fromJS(data);
viewModel.someBool = ko.computed({
  read: function () { return this.someBool(); }
  , write: function (value) { this.someBool(value); $("#out").append("<br/>writing " + value); }
  , owner: this
});
ko.applyBindings(vm);

加载 js 时出现以下错误:Uncaught TypeError: Object [object global] has no method 'someBool'

在这里直播 js:http://jsbin.com/exokav/1/edit

只是想附加到我现在拥有的一些 $("#out") div,但后来我想写信给localStorage 以便为用户保存状态。谢谢。

【问题讨论】:

  • 你想达到什么目的?你为什么不只是在someBool 属性上使用subscribe? jsbin.com/exokav/2/edit
  • 也许subscribe 就是我要找的东西!我怎么做?我最终试图实现一种方法来更新localStorage,只要用户切换该复选框,即data-binded 到.someBool。帖子中有更多详细信息,“但稍后我想......”

标签: knockout.js knockout-mapping-plugin


【解决方案1】:

如果您只是在 someBool 更改时尝试写入本地存储,请执行以下操作:

viewModel.someBool.subscribe(function(val) {
   // Write val to local storage.
});

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 2011-09-08
    • 2016-07-24
    相关资源
    最近更新 更多