ember.js触发基于条件的动作

时间:2018-01-28 23:59:53

标签: javascript ember.js handlebars.js action

如果条件返回true,我想在组件hbs文件中触发一个动作。例如,如果我的component.js文件如下所示:

export default Ember.Component.extend({
  toggleMe: false,
  actions: {
    changeValue() {
      return this.toggleProperty('toggleMe');
    }
  }
});

我想在我的hbs文件中调用changeValue操作。这是我在component.hbs文件中尝试过的方法:

{{#if model.property}}
    {{action changeValue}}
{{/if}}

我收到错误

"Assertion Failed: Action passed is null or undefined"

3 个答案:

答案 0 :(得分:1)

首先,组件hbs中有拼写错误的语法。它应该以{{1​​}}开头。

其次,您可以使用#join together DataFrames df2 = pd.concat([c, h.add_suffix('_2')], axis=1) #with real data is possible data are not aligned and get NaNs #for remove all NaNs rows use #df2 = df2.dropna() df2['Model'] = df2['copy'].astype(str)+df2['name'].astype(str)+'-'+ df2['name_2'].astype(str) #filter columns and remove MultiIndex df2 = df2[['Model','ntv','ntv_2']].reset_index(drop=True) print (df2) Model ntv ntv_2 0 G1BA-LA1 0.450 1.234 1 G1BB-LB 0.878 1.056 2 F2BA1-MA -7.890 -0.871 3 F2BB-LB1 2.345 0.737

来完成您的要求

为您的理解创建了live ember twiddle

将组件js文件修改为,

{{

您也可以阅读Ember computed propertiesEmber observers

答案 1 :(得分:0)

您不应该在模板文件中调用操作 有计算属性。
这是一个例子:

import { computed } from '@ember/object';
export default Ember.Component.extend({
  toggleMe: false,
  toggleComputedProperty: computed('toggleMe', function() {^
      return this.toggleProperty('toggleMe');
    }
  }
});

现在您可以在模板或逻辑中使用toggleComputedProperty。

根据经验:永远不要尝试在模板文件中进行逻辑/状态更改。为此使用计算属性或其他功能。

答案 2 :(得分:0)

错误是由于动作调用期间拼写错误的语法造成的。在调用它们时,必须使用双引号作为动作名称。

{#if model.property}}
  {{action "changeValue"}}
{{/if}}

我还添加了twiddle供您参考。