我一直在使用 EmberJS 中的嵌套组件进行组件初始化时遇到问题。我正在尝试使用 jquery.steps ( http://www.jquery-steps.com/ ) 创建一个向导。
我有一个向导组件,我希望将每个步骤作为一个组件,它可以具有更改向导步骤视图的操作。但是,在初始化 jquery.steps 之后,向导中的视图并没有改变。似乎也没有检测到动作(是因为 jquery.steps 也有一个名为动作的属性吗?)
我希望 {{temp}} 的值会根据所选单选按钮在视图中发生变化。如果我不在父组件中实例化 $().steps,则此方法有效,但如果我实例化 jquery.steps,则停止工作。这里会发生什么?我如何让它工作?我尝试以各种方式使用 Ember.run 来执行 loadSteps() 无济于事。
向导.js
import Ember from 'ember';
export default Ember.Component.extend({
temp: null,
didInsertElement: function () {
this._super();
this.loadSteps();
},
loadSteps: function () {
this.$().steps({
headerTag: "h3",
bodyTag: "section",
transitionEffect: "slideLeft",
autoFocus: true
});
},
actions: {
addByHandSelected: function () {
this.set('temp', true);
},
setupSheetSelected: function () {
this.set('temp', false);
//TODO: show file input
},
removeStep: function (step) {
this.$().steps("remove", step);
},
addStep: function (step) {
this.$().steps("add", step);
},
}
});
向导.hbs
{{creation-method-wizard-step addByHandSelected='addByHandSelected' setupSheetSelected='setupSheetSelected'}}
{{label-size-wizard-step}}
创建方法向导-step.js
import Ember from 'ember';
export default Ember.Component.extend({
tagName:'',
temp: true,
actions: {
addByHandSelected: function () {
this.set('temp',false);
},
setupSheetSelected: function () {
this.set('temp',true);
}
}
});
创建方法向导-step.hbs
<h3>Creation Method</h3>
<section>
<div class="radio">
{{#radio-button value="hand" name='creationMethod' groupValue=creationMethod changed="addByHandSelected"}}Enter By Hand{{/radio-button}}
</div>
<div class="radio">
{{#radio-button value="setupSheet" name='creationMethod' groupValue=creationMethod changed="setupSheetSelected"}}Use Setup
Sheet{{/radio-button}}
</div>
Temp is {{temp}}
</section>