使用 donejs 未正确更新计算值
Calculated value not being updated correctly using donejs
我有一个标准的 donejs 项目,其中包含一个组件和一个模型,它们都是使用默认生成器创建的,如下所示:
donejs add component storyBoard story-board
donejs add supermodel story
我在这里留下了一个示例项目:https://github.com/riescorp/donejs-promise-iterate
如果你 运行 这个例子使用 donejs develop
并转到 http://localhost:8080 你会看到这样的东西:
问题是,无论何时更改任何故事的页数(输入框)的值,总和都不会更新其值。我尝试了几乎所有方法,从 promises 到 already-resolved-promises,但似乎没有任何效果。
不知何故,当这些值中的任何一个发生变化时,根本没有更新触发器。我也尝试将结果设置为列表 (can.List
),但没有成功。
问题似乎是 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
属性什么时候改变。
我有一个标准的 donejs 项目,其中包含一个组件和一个模型,它们都是使用默认生成器创建的,如下所示:
donejs add component storyBoard story-board
donejs add supermodel story
我在这里留下了一个示例项目:https://github.com/riescorp/donejs-promise-iterate
如果你 运行 这个例子使用 donejs develop
并转到 http://localhost:8080 你会看到这样的东西:
问题是,无论何时更改任何故事的页数(输入框)的值,总和都不会更新其值。我尝试了几乎所有方法,从 promises 到 already-resolved-promises,但似乎没有任何效果。
不知何故,当这些值中的任何一个发生变化时,根本没有更新触发器。我也尝试将结果设置为列表 (can.List
),但没有成功。
问题似乎是 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
属性什么时候改变。