【问题标题】:Knockout.js - Interpreting the data object on click eventsKnockout.js - 解释点击事件的数据对象
【发布时间】:2012-04-24 17:19:42
【问题描述】:

我正在使用 Knockout.js,试图弄清楚如何解析作为其点击处理程序的一部分传递的数据对象的属性。到目前为止,我只能找到/查看与对象关联的函数的文本定义。

例如,在使用Chrome调查点击绑定传递的数据对象时,我只能找到:

> data.CityId.toString
function toString() { [native code] }

> data.CityId.toString()
"function b(){if(0<arguments.length){if(!b.equalityComparer||!b.equalityComparer(d,arguments[0]))b.H(),d=arguments[0],b.G();return this}r.T.Ha(b);return d}"

程序:

程序列出了几个城市,点击元素后,我想调用一个函数来更新数据——从视图模型实例中传入一个参数。

虽然我使用的是映射插件,但视图模型是有效的:

  • 城市标识
  • 城市名称

调用该方法的 HTML 模板:

   <div data-bind="click: function(data, event) { UpdateForCity(data, event); }">
      <span data-bind="text: CityName"></span>
    </div>

要调用的函数:

function UpdateForCity(data, event) {
    alert('CityId: ' + data.CityId); // This is the part where I'd like to resolve the value
}

该函数接收该值,但到目前为止,所有试图找到解决该属性的方法的尝试都没有成功。如何解析上面示例中的 CityId 属性? (我是否误解了 MVVM/knockout 模式中的任何内容?)

谢谢。

【问题讨论】:

  • 看起来你的 toString() 方法返回了一个 observable。
  • 该空间中的大多数方法都返回类似的结果 - 我如何解析 observable 的当前值?

标签: knockout.js


【解决方案1】:

原来有一个实用方法可以解决这个问题:

var cityId = ko.utils.unwrapObservable(data.CityId);

看起来也可以将函数附加到视图模型项的每个实例,但这需要更深入地了解映射插件的配置...

【讨论】:

    【解决方案2】:

    只是提供一个由 Ryan Niemeyer 创建的小提琴示例,我现在指的是解决我的几个淘汰赛问题。这是小提琴的链接:http://jsfiddle.net/rniemeyer/vdcUA/

    如果你需要更多信息,你也可以去 knockmeout 网站查看

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2017-04-09
      • 1970-01-01
      • 2018-09-23
      • 2012-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      相关资源
      最近更新 更多