我正在开发一个项目,其中另一个开发人员使用ember.js框架开发了一个仅作为客户端的独立解决方案。
我被要求将此工作转移到ASP.NET MVC3项目。
问题是,ember.js在语法中使用大括号和双括号,这似乎会干扰MVC3使用的剃刀引擎。
我是否认为2种技术(ASP MVC3和ember.js)无法协同工作?
答案 0 :(得分: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
方法 之前会发生这种情况
当您拥有多语言支持时,资源文件也是一个好主意
答案 1 :(得分:1)
简答:是的,任何js库都可以与asp.net mvc一起使用
但是,如果您遇到某些语法问题,则需要与js库并行分析特定视图呈现引擎(Razor,Web表单,Spark等)语法< /强>
例如,jQuery使用$ sign作为Alias,可以替换。请看这个参考文献 - Replace “$”(dollar Sign) with “JQuery”
但是,如果它不起作用,那么您可能会重新考虑您的视图引擎。
答案 2 :(得分:1)
我正在使用ASP.NET MVC 4应用程序,该应用程序使用Ember并且没有任何问题。
双括号的情况很容易解决:只需使用@:
。 @:
之后的所有内容都被解释为纯文本。因此,带有把手表达的剃刀标记将是有效的:
<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上迁移所有项目
答案 3 :(得分:-1)
您应该能够使用http://weblogs.asp.net/scottgu/archive/2010/12/15/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax.aspx中详述的块来包装您的余烬模板,以便它们可以正常使用。
据说这样做并不能满足客户的要求。一个普通的ASP.Net MVC开发人员仍然需要学习使用这个代码库的ember.js。你应该做的是使用ASP.Net MVC概念重写它,比如从模型,部分视图等创建页面。