ember js组件init不同的功能

时间:2016-05-13 18:33:28

标签: javascript ember.js

我有一个'测试测试'包含2个功能的组件如下:

import Ember from 'ember';

export default Ember.Component.extend({

    myfunction1: Ember.on('init', function() {
       alert(123);
        }),

    myfunction2: Ember.on('init', function() {
       alert(1234);
        }),

});

在Application.hbs上我打电话

{{#test-test}}{{/test-test}}

当然结果将是2警报(123)和警报(1234)。

如果我希望它只启动myfunction1等1个函数并且不启动myfunction2,我该怎么办?

1 个答案:

答案 0 :(得分:0)

我这样做:

//component/test-test.js
import Ember from 'ember';

export default Ember.Component.extend({

   whatToDoOnInit: null,

   initFunctions: Ember.on('init', function() {
      switch(this.get('whatToDoOnInit')) {
           case 1:
                 alert('123');
                 break;
           //...and so on
      }
   }),

});

并称之为:

//template.hbs
{{#test-test whatToDoOnInit=1}}{{/test-test}}

当然这样你可以实现另一个逻辑:

export default Ember.Component.extend({

   doOneThing: false,
   doAnotherThing: true,

   initFunctions: Ember.on('init', function() {
      if(this.get('doOneThing')) {
           alert('123');
      }
      //...
   }),

});

//template.hbs
{{#test-test doOneThing=true doAnotherThing=false}}{{/test-test}}