Я честно не знаю, почему это не работает. Кажется, это довольно стандартная операция. Он не устанавливает компонент, не выдает ошибку и не запускает функцию сразу после нее. Все happing в cfg.AddToCart.vm.addToCart()
Монтаж не работает внутри контроллера vm
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>;
};
Мы используем new cfg.selectComponent(cfg.Options, cfg.optionsView)
компонент несколько раз в течение приложения, так что это не ошибка с этим. #atc-error
установлен в display:none
, но это также не проблема. Это не единственное условное монтирование в приложении, поэтому я немного в тупике.
Спасибо за подробную запись. На самом деле у нас есть несколько способов создания компонентов, и я, возможно, нашел этот стиль со старого поста. Нам было интересно, какой будет более правильный способ их настройки. Я очень внимательно посмотрю на это! –