gpt4 book ai didi

ember.js - ember-cli App.get/App.set 抛出未定义

转载 作者:行者123 更新时间:2023-12-02 21:48:32 25 4
gpt4 key购买 nike

我正在将基于全局的实时 Ember 应用程序转换为使用 ember-cli 的基于 es6 的应用程序。在我的应用程序中,我需要经常了解当前的路线。在全局版本中,我就是这样做的。

全局模式

var MyApp = Ember.Application.create({
currentRoute : ''
});

MyApp.Route = Ember.Route.extend({
actions : {
didTransition : function () {
MyApp.set('currentRoute', this);
}
}
});

然后,在确定发生某些事件时如何/从何处进行转换时,我可以在 session 或离线 Controller 中执行 MyApp.get('currentRoute') 操作。

使用 ember-cli 时,我导入应用程序以便能够从必要的 Controller 引用它。

import MyApp from "../app";

但事实证明,MyApp.currentRouteMyApp.getMyApp.set都是未定义.

我认为这是 ember-cli 中的一个错误,应用程序实例不再具有绑定(bind)的 getter 和 setter。我的一部分意识到,将内容存储在应用程序实例上也不是一个好习惯。

我可以通过将 MyApp.getMyApp.set 的所有实例转换为 Ember.get(MyApp, ...)Ember.set(MyApp, ...) 分别,但我想我应该先在这里问,因为这似乎是 Ember-Cli 的问题,或者是其他地方的问题更好的推荐方法来实现我的需要。

最佳答案

如果您查看 app.js(您要导入的内容),它不是您的应用程序实例,它正在导出 Ember.Application 的子类 。这就是为什么 get 等在其上不可用。

var App = Ember.Application.extend({   <----- NOT create
modulePrefix: config.modulePrefix,
podModulePrefix: config.podModulePrefix,
Resolver: Resolver
});

export default App;

要从路由中获取实际的应用程序实例,请使用:

Ember.getOwner(this).lookup('application:main')

关于ember.js - ember-cli App.get/App.set 抛出未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26554044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com