【问题标题】:Knockoutjs native template binding and simple array of stringsKnockoutjs 原生模板绑定和简单的字符串数组
【发布时间】:2012-02-27 20:52:15
【问题描述】:

我正在尝试理解原生 knockoutjs template binding,尤其是 foreach binding

只是想知道如何使用原生出价访问当前项目?使用jQuery.tmpl,可以使用$item / $data 之类的东西。当数据源是基元数组时如何使用本机模板绑定执行相同操作,因此每个项目都没有命名字段?这是JSFiddle 的两个示例,第一个 - 使用本地绑定,其中数据源是自定义对象数组,第二个 - 绑定到字符串数组。我无法让它工作,好像我遗漏了一些明显的东西?

基本上,我正在尝试理解本机绑定,并能够使用本机绑定重构以下示例:JSFiddle: Comma separated list of checked items,这样我就可以保留一个可观察变量,该变量表示一个逗号分隔的检查项目列表。

【问题讨论】:

    标签: binding mvvm knockout.js templatebinding knockout-2.0


    【解决方案1】:

    您可以使用$data 访问原始值,例如:http://jsfiddle.net/rniemeyer/M73S8/3/

    这是另一个更新的小提琴:http://jsfiddle.net/rniemeyer/EGAH9/8/。不确定您要在其中支持的确切功能。

    【讨论】:

    • 哇,$data 也受支持,看起来我已经在我的原始脚本中混合了一些东西 sicne 也尝试了 $data/$item,无论如何谢谢,现在我 100% 确定我该用什么。关于第二个示例,您能否看到this example,同时检查selectedPeople 变量的复选框值反映了所选项目的列表,是否可以使用本机投标来使用这样的模板?谢谢
    • 你想让selectedPeople 有他们的名字还是别的什么?
    • 对,这可以是复选框名称或任何其他复选框属性(如 ID)的值,但主要思想是保留所选项目的列表。
    • checked 绑定使用选项元素的值,因此您可以存储 id 或 name 或任何您想要的。如果要存储对象,则必须存储一个键(id),然后使用计算的 observable 来表示对象数组。这是一个示例:jsfiddle.net/rniemeyer/EGAH9/11
    • 我对本机绑定不能使用模板投标和$root 是否正确?换句话说,是否可以使用模板化<li> 做同样的事情?
    【解决方案2】:

    我不确定这是否已经从令人惊叹的 Niemeyer 那里得到了回答(感谢您在 Knockout 社区中的所有帮助!),但我制作了一个 jsFiddle 来展示将实际的 Person 对象 Selected 存储在一个可观察的数组中。

    我不确定这是否是您想要做的,但也许其他人正在研究如何做这件事:将实际对象绑定到一个可观察的数组中,而不仅仅是 ids(虽然,我也添加了以提醒我)。

    复选框列表选定对象绑定示例:http://jsfiddle.net/cjgaudin/Dp7Br/

    【讨论】:

    • RNiemeyer 已经发布了一个解决方案 here,无论如何,看到不同的解决方案很有趣,因为我才开始学习 knockoutjs,谢谢并感谢 +1
    • 这方面的一件好事是,Knockout 允许您以多种不同的方式解决这些问题。一个好的框架允许以多种方式解决复杂的问题。这就是我喜欢 Knockout 的原因。此外,RP Niemeyer 是淘汰赛中的佼佼者。他知道他的东西。
    猜你喜欢
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多