8

我正在开发一个项目,其中另一个开发人员使用 ember.js 框架开发了一个 UI 作为独立的客户端解决方案。

我被要求将这项工作转移到 ASP.NET MVC3 项目中。

问题是,ember.js 在语法中使用了大括号和双大括号,这似乎干扰了 MVC3 使用的 razor 引擎。

我是否认为这两种技术(ASP MVC3 和 ember.js)不能一起工作?

4

4 回答 4

3

一种方法是将把手模板放在资源文件 (resx) 中,然后在类似于以下的匿名函数中将它们添加到 Ember:

<script type="text/javascript" src="path/to/ember.js">
<script type="text/javascript" src="path/to/your/app.js">
<script type="text/javascript">
    (function() {
        Ember.TEMPLATES["your template name"] = Ember.Handlebars.compile('<%= template as string from the resource file goes here %>');
    })();

    App.initialize();
</script>

这应该您调用应用程序的initialize方法之前发生

当您有多语言支持时,资源文件也是一个好主意

于 2012-07-04T17:49:30.993 回答
1

我正在开发大量使用 Ember 并且没有任何问题的 ASP.NET MVC 4 应用程序。

带有双括号的案例有非常简单的解决方法:只需使用@:. 之后的所有内容都@:被解释为纯文本。因此,这个带有车把表达式的剃刀标记将是有效的:

<ul>
@if (Model.SomeCondition)
{
    @:{{#each product in products}}
    <li>{{product.name}}</li>
    @:{{/each}}
}
</ul>

更新:目前我正在使用 Ember 1.6 - 1.9 版本和 Ember Data 1.0.0-beta-8 - 1.0.0-beta-12 版本和 ASP.NET MVC 5.2 - 效果很好。很快将在最新的 Ember 1.9、Ember Data 和 Handlebars 2.0 上迁移所有项目

于 2014-06-24T17:19:00.763 回答
1
于 2012-07-04T15:26:40.940 回答
-1

您应该能够使用 http://weblogs.asp.net/scottgu/archive/2010/12/15/asp-net-mvc-3-razor-s-and-lt-text-gt-中详述的块syntax.aspx来包装您的 ember 模板,以便它们正确可用。

也就是说,您这样做并没有真正满足客户的要求。一个普通的 ASP.Net MVC 开发人员仍然需要学习 ember.js 才能使用这个代码库。您真正应该做的是使用 ASP.Net MVC 概念重写它,例如从模型、部分视图等创建页面。

于 2012-07-04T13:05:40.943 回答