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 (ドキュメント) を使用したいのだと思います。
一般的に、算出プロパティからネイティブゲッター/オートトラッキングへと移行しようとしています。topic-footer-buttons API も、いつかはそれをサポートするために近代化する必要があると思います 
「いいね!」 2
RGJ
(Richard - Communiteq)
3
Davidさん、迅速なご対応ありがとうございます!
しかし、topic.tags.@each を使用しても解決しません。(タグを手動で追加した場合も、ボタンを押した場合も同様です。)
disabled() 関数内の console.log は実行されません。displayed() 内でも実行されません。
「いいね!」 1
david
(David Taylor)
4
ボタンをクリックすると、新しいタグがトピックの先頭に正しく表示されますか?
「いいね!」 1
RGJ
(Richard - Communiteq)
5
はい、うまくいきます。
this.topic.notifyPropertyChange("tags"); も試しました。
そして、絶望して他のプロパティを操作しようとさえしました(this.topic.title = this.topic.title + "!" のように、dependentKeys に topic.title を含めるなど)。それも機能しません。this.topic.set... を使用しても機能しません。
「いいね!」 1
david
(David Taylor)
6
興味深いことに、OPの例をコピー/ペーストしてローカルで実行すると、完全に機能するようです。
他に干渉している可能性のあるテーマやプラグインはありますか?それとも、OPの最小限の例と比較して、あなたの「実際の」コードには何か違いがありますか?
RGJ
(Richard - Communiteq)
7

私の「最小限の」コードは、現時点では私の「実際の」コードです。完全にクリーンなインストールに移動して、何かが変わるかどうかを確認します。
編集:はい、クリーンなインストールで機能します:sob: 
このトピックはリストから削除します。恥ずかしい思いをしないように 
原因がわかったら、またお知らせします。
@davidさん、ありがとうございました!
「いいね!」 2
RGJ
(Richard - Communiteq)
クローズされました:
9
このトピックは、最後の返信から30日後に自動的にクローズされました。新しい返信は許可されていません。