Ember,Handlebars,Contrib-Ember-Templates在移动浏览器上生成格式错误的模板

时间:2013-07-16 11:05:17

标签: javascript ember.js handlebars.js grunt-ember-templates

使用Gruntjs插件contrib-ember-templates在移动浏览器上查看时会产生错误的结果。

生成的模板

<div id="ember570" class="ember-view">
<section>
    <div class="center">
        <div class="logo-container">
        </div>
        <div class="misuseAct">
            <script id="metamorph-0-start" type="text/x-placeholder"></S'+'CRIPT>
                <h1>Hello to Splash Page</h1>
                <p>Welcome to my splash page</p>
                <a href="#" data-ember-action="1" class="btn btn-success right" id="proceed">Proceed</a>
            <script id='metamorph-0-end' type='text/x-placeholder'></S'+'CRIPT>
        </div>
    </div>
</section></script></div></div></section></div>

但是,通过实时调试编辑模板会产生所需的结果。

所需模板

<div id="ember570" class="ember-view">
<section>
    <div class="center">
        <div class="logo-container">
        </div>
        <div class="misuseAct">
            <script id="metamorph-0-start" type="text/x-placeholder"></script>
                <h1>Hello to Splash Page</h1>
                <p>Welcome to my splash page</p>
                <a href="#" data-ember-action="1" class="btn btn-success right" id="proceed">Proceed</a>
            <script id='metamorph-0-end' type='text/x-placeholder'></script>
        </div>
    </div>
</section></div></div></section></div>

其他信息

  • 只有在使用EmberJS缩小版本(发布版本)时才会出现此问题。

  • 此问题未在桌面浏览器上显示。

  • 此问题不会产生控制台消息。

  • 运行grunt --verbose显示没有错误/警告消息。

技术堆栈

NodeJS - v0.10.12

grunt-cli v0.1.9

grunt v0.4.1

grunt-contrib-templates - 0.4.10

JQuery - v1.10.2

这些由contrib-grunt-template和前端客户端应用程序使用。

EmberJS - v1.0.0-rc.6-15-gfe89337(缩小)

把手 - 1.0.0

修改

只有在模板上使用视图时才会出现此问题。

未编译的模板

<section>
    <div class="center">
        <div class="logo-container">
        </div>
        <div class="misuse">
            {{#if view.showProtection}}
                <h1>{{localise _data_protection_act_header}}</h1>
                <p>{{localise _data_protection_act_body}}</p>
                {{#linkTo "login" classNames="btn btn-success right" id="proceed"}}{{localise _proceed}}{{/linkTo}}
            {{else}}
                <h1>{{localise _misuse_act_header}}</h1>
                <p>{{localise _misuse_act_body}}</p>
                <a href="#" {{action 'agrees' target="view"}} class="btn btn-success right" id="proceed">{{localise _proceed}}</a>
            {{/if}}
        </div>
    </div>
</section>

索引视图

Application.IndexView = Ember.View.extend({
    showProtection: false,
    agrees: function () {
        this.set('showProtection', true);
    }
});

修改

我已经将此缩小到模板中的这一行。

 {{#if view.showProtection}}
    ...
 {{else}}
    ...
 {{/if}}

1 个答案:

答案 0 :(得分:1)

此问题与移动数据提供商O2有关(可能是其他人,但不是沃达丰或3)。

这似乎是因为O2的数据政策相当严格,其中 他们会对文件进行缩小,剥离和执行各种crazy项操作 通过他们的网络。

提供了解决方法here