【问题标题】:How to access a route of an Ember application built with Ember-CLI from custom HTML?如何从自定义 HTML 访问使用 Ember-CLI 构建的 Ember 应用程序的路由?
【发布时间】:2016-02-29 23:03:18
【问题描述】:

我的目的是在一个使用 Yii 2 构建的基于 PHP 的 Web 应用程序中创建一个丰富的工作岛。

这意味着我有一个路由,比如/cars/index,目前正在由 Yii 渲染到服务器端。现在我想将 Yii 模板代码移动到 Ember 模板中。

Ember 代码是使用 Ember-CLI 的 ember build 组装的。我创建了从 Yii 公共 web 目录到两个 Ember 文件 dist/vendor.jsdist/app.js 的软链接,以便可以从 Web 浏览器访问代码。为此,storeConfigInMeta: false 必须如下所示设置:ember-cli meta config/environment file

虽然我已经成功让 Ember 使用 ember-islands addon 运行我的代码,但目标是保持 MVC 结构,利用 Ember 应用程序的模型和控制器。这是为了在未来有可能完全转向客户端渲染,而仅使用组件是无法实现的。

不幸的是,我在研究这个主题时发现我必须禁用 Ember.Application 的创建,然后手动创建这样的对象。这种方法不适合我的用例,因为这样我就不能在服务器端模板中使用模型和控制器代码。或者我可以吗?

另外,我们怎样才能路由到/cars/index,而不让框架抛出关于 Yii 的路由不匹配这种格式的错误(目前类似于/index.php?r=cars/index)? (Uncaught UnrecognizedURLError)

【问题讨论】:

    标签: javascript ember.js yii2 integration


    【解决方案1】:

    试试ember-export-application-global 插件,它将允许您访问使用 Ember CLI 创建的应用程序实例。这样您就可以直接从服务器代码访问您的 Ember 应用程序。

    【讨论】:

    • 谢谢你,我不知道全局不会在生产模式下导出。不幸的是,这并没有回答如何使用 Ember 应用程序本身中不存在的代码从 IndexRoute 移动到 CarsRoute 的问题。
    • @Pyro 你想定义一个路由或过渡到一个现有的路由?
    • 我希望应用程序从适合页面的路由开始,但不是通过 URL 推断该信息(因为它不能这样做),而是手动推断。如果为了实现这一点,我必须从 IndexRoute 过渡到 CarsRoute,那就这样吧。但最终结果应该是渲染汽车/索引并通过 AJAX 获取模型。
    • 难道不能像这样定义汽车路线:this.route('cars', { path: 'cars/index' })? Ember 严重依赖 URL 来满足它的需要。也许您可以设置位置适配器来摆脱它? emberjs.com/api/classes/Ember.Location.html#toc_autolocation
    猜你喜欢
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 2015-08-27
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多