我试图在EmberJS中实施一个由10个不同问题组成的简单问卷组件,其中每个附加问题取决于之前问题的答案(最大深度为6)并在回答之后出现。所有这些问题都是肯定的或没有问题。
我现在想要的是2个复选框/按钮,一个代表是,一个代表否。
我知道我可以通过为每个问题绑定到复选框并设置彼此的2个计算属性来实现这一点(即使我不太确定,因为相反的绑定,如何确保默认情况下都不是这些,导致下一个问题被显示),但我不能帮助,但我认为这个用例的20个计算属性不是最好的做事方式
非常感谢任何关于这个问题的更好,更清晰的想法!
答案 0 :(得分:1)
构建问题组件。
App.CQuestionComponent = Ember.Component.extend({
q: null,
isYes: false,
isNo: false,
result: null,
_yes: function() {
var isYes = this.get('isYes');
if ( isYes ) {
this.removeObserver('isNo', this, '_no');
this.set('isNo', ! isYes);
this.addObserver('isNo', this, '_no');
this.set('result', true);
} else {
this.set('result', null);
}
}.observes('isYes'),
_no: function() {
var isNo = this.get('isNo');
if ( isNo ) {
this.removeObserver('isYes', this, '_yes');
this.set('isYes', ! isNo);
this.addObserver('isYes', this, '_yes');
this.set('result', false);
} else {
this.set('result', null);
}
}.observes('isNo'),
});