RGJ
(Richard - Communiteq)
1
我无法在 registerTopicFooterButton 中使用 dependentKeys(此处 有文档说明)
我的代码(最小示例)
api.registerTopicFooterButton({
id: "my-topic-footer-button",
action() {
this.topic.updateTags(["my-tag"]);
},
title() {
return "my.button.title";
},
label() {
return "my.button.label";
},
dependentKeys: ["topic.tags"],
disabled() {
return this.topic.tags.includes("my-tag");
}
});
预期:一旦我按下按钮,主题的标签就会设置为 my-tag(有效),这会触发按钮的重新渲染,并禁用它。
预期:一旦我手动添加标签,按钮就会被禁用。
实际:在任一场景下都不会触发重新渲染。
页面刷新时,按钮可以正确禁用/启用。
有人能发现我的错误吗?
1 个赞
david
(David Taylor)
2
当计算属性依赖于 topic.tags 时,数组本身被替换时会导致其失效。但当向数组添加/删除项目时,它不会导致失效。
因此,我认为您可能需要 topic.tags.@each(文档)。
总的来说,我们正试图从计算属性转向原生 getter/自动跟踪。我想我们最终必须现代化 topic-footer-buttons API 来支持这一点 
2 个赞
RGJ
(Richard - Communiteq)
3
非常感谢您快速的回复 David!
但是,使用 topic.tags.@each 无法解决此问题……(无论如何,手动添加标签时不行,按下按钮时也不行)。
在 disabled() 函数中进行 console.log 不会运行。在 displayed() 中也不会运行。
1 个赞
RGJ
(Richard - Communiteq)
5
是的,那没问题。
我也尝试了 this.topic.notifyPropertyChange("tags");
我甚至绝望地尝试修改其他属性(例如 this.topic.title = this.topic.title + "!" 并将 topic.title 包含在 dependentKeys 中)。那也不起作用。使用 this.topic.set... 也不起作用。
1 个赞
david
(David Taylor)
6
有趣的是,如果我复制/粘贴 OP 中的示例并在本地运行,它似乎运行完美:
是否有其他主题/插件可能干扰?或者您的“真实”代码与 OP 中的最小示例相比,是否存在其他不同之处?
RGJ
(Richard - Communiteq)
7

我“最小化”的代码就是我目前的“真实”代码。我将把它移到一个全新的安装中,看看是否会有任何改变。
编辑:是的,它在干净的安装上确实有效

我将取消列出此主题,这样我就不必忍受羞耻感了 
我会在找到原因时通知你。
感谢你的帮助 @david!!
2 个赞
RGJ
(Richard - Communiteq)
关闭
9
此话题在最后回复后30天自动关闭。不再允许新回复。