【问题标题】:Ember access variable inside MixinMixin 内部的 Ember 访问变量
【发布时间】:2016-02-02 13:10:41
【问题描述】:
import Ember from 'ember';
import myConst from '../utils/constants';

export default Ember.Mixin.create(myConst, {
  getFieldId: function(productCode) {
        console.log(myConst.MY_METHODS.FIELD_ID); //Not able to access this
  }
});

我的 constants.js 看起来像

var myConst = {};

myConst.MY_METHODS = {
        FIELD_ID: "fieldId"
};

export default myConst;

我无法在 mixin 中访问 myConst。我做错了什么?

【问题讨论】:

  • 为什么你们都混入myConst并直接访问它?
  • 我是 Ember 的新手。您能解释一下在我的 mixin 中访问 myConst.MY_METHODS 的正确方法是什么吗?

标签: javascript ember.js mixins


【解决方案1】:

我认为您在这里混淆了几个概念。在您的示例中,myConst 是一个包含一些默认值的实用程序模块,对吗?在这种情况下,您不想将其混入您的 mixin(这就是您使用 Ember.Mixin.create(myConst, {...}) 所做的事情。您应该这样做:

import Ember from 'ember';
import myConst from '<app-name>/utils/constants';

export default Ember.Mixin.create({
  getFieldId: function(productCode) {
    console.log(myConst.MY_METHODS.FIELD_ID);
  }
});

如果这不起作用,则可能与您的 import 路径有关。我将通过 console.loging myConst 开始调试,以确保您拥有模块中的预期对象。

【讨论】:

  • 我建议改用完整路径,例如'&lt;app-name&gt;/utils/constants'
  • 嗯..我已经尝试过你的方式(即没有通过 myConst 来创建)...还验证了 utils/constants.js 的路径...仍然无法正常工作(无法找到 myConst)
  • 仅供参考......当我调试时......代码(myConst.MY_METHODS)被转换/显示为 _myAppUtilsConstants['default'].MY_METHODS 并且我得到了这个转换后代码的值(添加手表)
  • 嗯,你的解析器听起来有点奇怪。你在使用 Ember cli 吗?什么版本?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-29
  • 1970-01-01
  • 2011-06-15
  • 2014-01-03
  • 2017-01-19
相关资源
最近更新 更多