【问题标题】:Knockout mapping & adding a new item淘汰制映射和添加新项目
【发布时间】:2012-08-06 18:59:21
【问题描述】:

我在这里有一个示例 jsfiddle,它使用敲除映射基于服务器模型(在提供的示例中为本地)生成一些 html 内容。

http://jsfiddle.net/QShrA/

如何为嵌套地址创建新的地址块? 即如何创建一个名为“添加新”的按钮并在底部创建一个空地址块?

提前感谢您提供的任何帮助。

编辑 - 重新打开

问题没有解决。我注意到,在我实现Bill's solution(如下)之后,我为新添加的地址块计算的可观察对象不起作用,因为它们已被禁用。希望有人能解决这个问题。谢谢。

  self.SMMDD = ko.computed({
        read: function() {
            **if ($.isFunction(self.SMONTH)) {**
                return self.SMONTH() + "/" + self.SDAY();
            **}**
        },
        write: function(value) {
            self.SMONTH(value.substring(0, 2));
            self.SDAY(value.substring(2, 4));
        },
        owner: self
    });

编辑 - 已解决

添加 deferEvaluation 选项似乎已经解决了这个问题。

  self.SMMDD = ko.computed({
        read: function() {
            return self.SMONTH() + "/" + self.SDAY();
        },
        write: function(value) {
            self.SMONTH(value.substring(0, 2));
            self.SDAY(value.substring(2, 4));
        },
        owner: self,
        deferEvaluation: true
    });

【问题讨论】:

  • 您是否要添加一个显示“添加新地址”的按钮并在底部创建一个空地址块?
  • 我也不确定你想要什么。请澄清。
  • 很抱歉不够清晰。是的,我想要一个显示“添加新地址”的按钮,并在底部创建一个空地址块。

标签: knockout.js knockout-mapping-plugin


【解决方案1】:

这是一个分叉/固定版本,其中我取消了您的按钮的注释并将其连接起来,以便它向数组添加一个空地址。

http://jsfiddle.net/RLNPa/

【讨论】:

  • 感谢您的回复,但这对我不起作用,因为我的计算 observables 已针对新地址块禁用。
  • 所以我在文档中找到了这个“deferEvaluation”选项,并将其设置为 true 似乎可以使其工作。我将把这个答案改回接受。谢谢。
猜你喜欢
  • 2012-08-01
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 2014-06-07
  • 2016-09-07
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
相关资源
最近更新 更多