代码之家  ›  专栏  ›  技术社区  ›  Lefty

Ember 2.16在路由/应用程序中创建状态哈希时出错

  •  0
  • Lefty  · 技术社区  · 7 年前

    我刚从react来到ember。路由/应用程序内部。我想使用“state”散列来保存支持函数、model()和actions()之外的变量。

    以下是有效的方法:

      session: Ember.inject.service(),
      servers: null,
      clients: null,
      variable3: null,
      variable4: null,
      variable3_id: null,
      selectedDate: null,
      currentUser: Ember.inject.service(),
    

    这就是我想做的:

    state: {
        session: Ember.inject.service(),
        servers: null,
        clients: null,
        variable3: null,
        variable4: null,
        variable3_id: null,
        selectedDate: null,
        currentUser: Ember.inject.service(),
    },
    

    当我访问它时,比如说get, get(this, 'state.session') 我发现这个错误:

    ember.debug.js:29034 Error while processing route: analytics Assertion Failed: Attempting to lookup an injected property on an object without a container, ensure that the object was instantiated via a container. Error: Assertion Failed: Attempting to lookup an injected property on an object without a container, ensure that the object was instantiated via a container.

    当我没有把变量放入 state 散列,并使用get访问, get(this, 'session') 我没有任何问题。这是怎么回事?我提供了足够的信息还是遗漏了什么?

    谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   ykaragol    7 年前

    欢迎来到ember。js。

    如错误消息中所述, state 不是由ember容器创建的,因此ember无法向其注入服务。控制器、服务、路由、组件和实例初始值设定项由ember创建,但不是普通对象。

    使用组件或控制器保持 状态 . 您不需要使用单独的状态对象。这个 component s的属性实际上是它的状态。

    另一方面,任何 service

    最后,当然有一些方法可以添加这些内容 服务 我同意 对象但这不是常见的用法。