symfony2开发环境中的ember js无法正常工作

时间:2012-10-08 19:05:06

标签: symfony ember.js

我已经使用symfony2构建了一个应用程序,该应用程序公开了一个REST Api。

现在我构建了一个用于消费的简单客户端

app.coffee - > app.js

App = Em.Application.create
    ready: ->
        @.entradas.load()
    Entrada: Em.Object.extend()
    entradas: Em.ArrayController.create
        content: []
        load: ->
            url = 'http://localhost/api/1/entrada'
            me = @
            $.ajax(
                url: url,
                method: 'GET',
                success: (data) ->
                    me.set('content', [])
                    for entrada in data.data.objects
                        me.pushObject DBPlus.Entrada.create(entrada)
            )

MyBundle:主页:index.html.twig

<script type="text/x-handlebars" src="{{ asset('js/templates/entradas.hbs') }}"></script>
<script src="{{ asset('js/libs/jquery-1.7.2.min.js') }}"></script>
<script src="{{ asset('js/libs/handlebars-1.0.0.beta.6.js') }}"></script>
<script src="{{ asset('js/libs/ember-1.0.pre.min.js') }}"></script>
<script src="{{ asset('js/app.js') }}"></script>

这里的问题是,当我在dev环境中运行并链接模板,例如<script type="text/x-handlebars" src="{{...}}">应用程序不起作用时,没有显示但在prod环境下工作正常。

他唯一适用于dev环境的方式是内联模板

MyBundle:主页:index.html.twig

<script type="text/x-handlebars">
    {% raw %}
    <ul class="entradas">
      {{#each App.entradas}}
        <li class="entrada">{{nombre}}</li>
      {{/each}}
    </ul>
    {% endraw %}
</script>

config_dev.yml

资产配置

assetic:
    debug:          %kernel.debug%
    use_controller: false
    bundles:        [ ]
    #java: /usr/bin/java
    filters:
        cssrewrite: ~
        #closure:
        #    jar: %kernel.root_dir%/Resources/java/compiler.jar
        #yui_css:
        #    jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar

可以解释为什么这个行为?

注意:我禁用了调试分析器工具栏,没有任何内容

3 个答案:

答案 0 :(得分:0)

在开发环境中,由此生成的URL:{{asset('js / templates / entradas.hbs')}}它有用吗?因为它可能不起作用,你会得到哪个错误?

答案 1 :(得分:0)

使用rake-pipeline,我用以下代码编写了一个AssetFile:

output BUILD_DIR
input SRC_DIR do
  match '**/*.handlebars' do
    handlebars :precompile => true
    concat 'template.js'
  end
end

并在我的layout.html.twig包含

<script src="{{ asset('js/template.js') }}"></script>

答案 2 :(得分:0)

尝试更改树枝Twig_Environment

    $this->options = array_merge(array(
        'tag_comment'     => array('{$', '$}'),
        'tag_block'       => array('{%', '%}'),
        'tag_variable'    => array('<%', '%>'),
        'whitespace_trim' => '-',
        'interpolation'   => array('${', '}'),
    ), $options);

路径:\ lib \ Twig \ Lexer.php