前にステップをレンダリングした後、Marionette ItemView.open が $el.empty() を呼び出すのはなぜですか?
ItemView が表示されないので歯ぎしりをした後、マリオネット コードを実行しました。驚いたことに、ItemViewがレンダリングされていました。以下は ItemView.show の一部です。
show: function(view){
this.ensureEl();
if (view !== this.currentView) {
this.close();
view.render(); // <-- Much rejoicing! It showed up!
this.open(view);
かっこいいので、デバッガーで続行を押して、バム! 私の見方はなくなった。open() メソッドで上書きされていたことが判明しました。
// Override this method to change how the new view is
// appended to the `$el` that the region is managing
open: function(view){
this.$el.empty().append(view.el);
},
そこで、$el.empty() です。オーバーライドできることがわかりましたが、これが起こらない別のアプリがあります。したがって、empty() のコードを見ると、次のようになります。
// Remove element nodes and prevent memory leaks
if ( elem.nodeType === 1 ) {
jQuery.cleanData( getAll( elem, false ) ); //<-- Much sadness it disappeared. :(
}
nodeType ===1 の意味を知っている人はいますか? 動作するアプリは nodeType===1 ではないようですが、ItemView が消えている現在のアプリは nodeType===1 です
私が何をすべきかについての提案はありますか?
オープンをオーバーライドしますか? ものによって?他の何かを壊すことはないと確信できるほど、私はマリオネットについてよく知りません。
nodeType を 1 以外に設定しますか? 他の設定は?
ここであなたの提案は?:)