EmberJS:问卷调查:将2个复选框绑定到相同的值,其中一个是Inverted

时间:2015-02-16 16:41:16

标签: ember.js

我试图在EmberJS中实施一个由10个不同问题组成的简单问卷组件,其中每个附加问题取决于之前问题的答案(最大深度为6)并在回答之后出现。所有这些问题都是肯定的或没有问题。

我现在想要的是2个复选框/按钮,一个代表是,一个代表否。

我知道我可以通过为每个问题绑定到复选框并设置彼此的2个计算属性来实现这一点(即使我不太确定,因为相反的绑定,如何确保默认情况下都不是这些,导致下一个问题被显示),但我不能帮助,但我认为这个用例的20个计算属性不是最好的做事方式

非常感谢任何关于这个问题的更好,更清晰的想法!

1 个答案:

答案 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'),

});

http://emberjs.jsbin.com/sifewitahu/1/edit?html,js,output

相关问题