これがなぜ機能しないのか正直にはわかりません。かなり標準的な操作であるようです。コンポーネントをマウントしておらず、エラーを投げておらず、その直後に関数を実行していません。すべてのcfg.AddToCart.vm.addToCart()
コントローラーの内部でマウントが動作しない
cfg.AddToCart = {
vm: {
init() {
return;
},
addToCart() {
let parent = document.getElementById('atc-error');
let errEl = document.getElementById('atc-error-component');
if(cfg.state.selections.SIZE) {
m.mount(errEl, null);
} else {
let component = new cfg.selectComponent(cfg.Options, cfg.optionsView);
m.mount(errEl, component);
cfg.util.toggleSlide(parent);
}
}
},
controller() {
cfg.AddToCart.vm.init();
}
};
cfg.AddToCart.view = function() {
return <div id="add-to-cart-container">
<div id="atc-error">
<span>Select a size and add to cart again.</span>
<div id="atc-error-component"></div>
</div>
<div class="small-12 columns">
<button class="large button alert"
onclick={() => {
this.vm.addToCart();
}}>
Add To Cart
</button>
</div>
</div>;
};
にhapping私たちは、アプリケーション全体でnew cfg.selectComponent(cfg.Options, cfg.optionsView)
コンポーネントを複数回使用するので、それはそれでエラーではありません。 #atc-error
はdisplay:none
に設定されていますが、これも問題ではないようです。これはアプリケーション内の唯一の条件付きマウントではないので、私はちょっと困惑しています。このパターンにそれを変更することにより、勤務
ありがとうございました。私たちは実際にコンポーネントを作るいくつかの方法を持っていて、私は古いポストからこのスタイルを見つけたかもしれません。我々は、それらを設定するより正しい方法がどんなものだろうと思っています。私はこれを非常に詳しく見ていきます! –