【问题标题】:Calculated value not being updated correctly using donejs使用 donejs 未正确更新计算值
【发布时间】:2017-01-07 15:57:14
【问题描述】:

我有一个标准的 donejs 项目,其中一个组件和一个模型都使用默认生成器创建,如下所示:

donejs add component storyBoard story-board
donejs add supermodel story

我在这里留下了一个示例项目:https://github.com/riescorp/donejs-promise-iterate

如果您使用donejs develop 运行此示例并转到http://localhost:8080,您将看到如下内容:

问题在于,每当您更改任何故事的页数(输入框)值时,总和都不会更新其值。我几乎尝试了所有方法,从承诺到已经解决的承诺,但似乎没有任何效果。

不知何故,当这些值中的任何一个发生变化时,似乎根本就没有更新触发器。我还尝试将结果设置为列表 (can.List),但没有运气。

【问题讨论】:

标签: javascript canjs donejs


【解决方案1】:

问题似乎是elem.pages 应该是elem.attr("pages")

这是适合我的代码版本:

export const ViewModel = Map.extend({
  define: {
    storyPromise: {
      get: function() {
        return Story.getList({});
      }
    },
    stories: {
      get: function(last, resolve) {
        this.attr("storyPromise").then(resolve);
      }
    },
    sum2: {
      get: function() {
        var total = 0;
        if (this.attr('stories') !== undefined) {
          this.attr('stories').each(function(elem) {
            total += parseInt( elem.attr("pages") );
          });
        }
        return total;
      }
    }
  }
});

您必须使用.attr,否则sum2 不知道pages 属性何时更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 2018-07-18
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多