ember.js 如何在ember-cli应用程序中导入“ember-routing/system/query_params”

tf7tbtn2  于 2022-11-05  发布在  其他
关注(0)|答案(3)|浏览(127)

我想我不太了解ember-cli应用程序中的模块层次结构。
我需要
Error: Could not find module 'ember-routing/system/query_params' imported from 'my-app/services/menu'
在我的一个应用服务中。
但控制台对我大喊大叫
Error: Could not find module 'ember-routing/system/query_params' imported from 'my-app/services/menu'
我应该使用什么路径来导入此模块?
谢谢

iibxawm4

iibxawm41#

我想做同样的事情;获取QueryParams类,这样我就可以创建一个接受查询参数键的更高级别的link-to
幸运的是,QueryParams是一个非常基本的类:您可以创建自己(兼容用于{{link-to}}版本的it:

import Ember from 'ember';
const { Object } = Ember;

export default Object.extend({
  isQueryParams: true,
  values: null,
});

取自QueryParams source

qlvxas9a

qlvxas9a2#

我猜您是从the Ember source中得到这个路径的。不幸的是,Ember的内部包结构并没有向其他模块加载器(如Ember-CLI)公开。到目前为止,访问Ember库及其内部的唯一方法是从ember中导入main对象并使用它。

// This...
import Ember from 'ember';
const Controller = Ember.Controller;

// Not this...
import Controller from 'ember-runtime/controllers/controller';

不幸的是,QueryParams对象并没有以这种方式公开。然而,该对象只是一个实现细节,我看不出为什么你的应用程序需要它。我猜你可能对它的实际作用有误解。guide on query parameters可能会在这方面对你有所帮助。

41ik7eoe

41ik7eoe3#

从ember内部导入是可能的。但它被认为是黑客。

const metal = Ember.__loader.require('ember-metal');

以上是如何从ember-metal导入到导入ember-routing/system/query_params查看加载程序注册表以正确导入

const registry = Ember.__loader.registry
console.log(registry);

相关问题