ember.js运行时解析器无法正常工作

时间:2015-06-26 05:49:03

标签: ember.js

我是ember.js的新手(但我从CakePHP体验和JS中了解MVC) 在过去的两周里,我在工作中构建了一个小应用程序 使用REST适配器加载JSON数据。我添加了一些带动作的按钮 一切正常,我学到了很多,但需要时间来弄清楚细节。

我的所有控制器,路线和模型目前都没有在文件夹结构中进行组织 这在ember.js-Guide中描述:http://guides.emberjs.com/v1.12.0/concepts/naming-conventions/

现在我想将文件移动到文件夹结构中。但是那时应用程序不起作用。 在我看来,解析器无法在运行时查找文件。但为什么呢?

一个不起作用的简单示例:

in" app.js" (在" index.html"中加载-tag):

App = Ember.Application.create({
    LOG_RESOLVER: true // just for debugging
});

;" router.js" (在&#34之后加载-tag; app.js"在" index.html"中):

App.Router.map(function(){
  this.route('mytest');
});

in" routes / mytest.js":

export default Ember.Route.extend({
  setupController: function(controller) {
    controller.set('title', "Hello world!");
  }
});

in" controllers / mytest.js":

export default Ember.Controller.extend({
    appName: 'mytest'
});

in" indes.html":

<script type="text/x-handlebars">
    {{#link-to 'mytest' }}Mytest{{/link-to}}<br/>
    {{outlet}}
</script>
<script type="text/x-handlebars" id="mytest">
  mytest Template
  <h1>appName: {{appName}}</h1>
  <h2>title: {{title}}</h2>
</script>

Handlebar-template&#34; mytest&#34;已显示,但{{appName}}和{{title}}为空。 如果我将&#34; mytest&#34; -Template移动到&#34; templates / mytest.hbs&#34;什么都没有显示出来。

我认为解析器不起作用。或者命名约定指南有什么问题?

我的另一个假设: Resolver-Stuff仅在使用类似ember-cli的构建过程时才有效。

使用&#34; ember-1.12.1.debug&#34;,&#34; ember-template-compiler-1.12.1&#34;

感谢您的帮助。

-update- 在这里&#34; index.html&#34; - 简单的例子:

<!doctype html>
<html class="no-js" lang="">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="x-ua-compatible" content="ie=edge">
        <title></title>
    </head>
<body>
    <script type="text/x-handlebars">
    {{#link-to 'mytest' }}Mytest{{/link-to}}<br/>
    {{outlet}}
    </script>

    <script type="text/x-handlebars" id="mytest">
        mytest Template
        <h1>appName: {{appName}}</h1>
        <h2>title: {{title}}</h2>
    </script>

    <script src="libs/jquery-2.1.4.js"></script>
    <script src="libs/ember-template-compiler-1.12.1.js"></script>
    <script src="libs/ember-1.12.1.debug.js"></script>
    <script src="app.js" ></script>
    <script src="router.js" ></script>
    </body>
</html>

1 个答案:

答案 0 :(得分:0)

目前我猜想有关命名约定的ember.js指南(guides.emberjs.com/v1.12.0/concepts/naming-conventions)被遗漏了,那么&#34; Ember.js使用运行时解析器来在没有大量样板的情况下连接你的物品&#34;只适用于&#34; ember-cli&#34;或更旧的&#34; ember应用套件&#34;或其他工具,但不是在应用程序运行时。因此,在运行JS应用程序时,不会从服务器加载任何JS文件。