我正在尝试开始使用 ember,但遇到了一个非常奇怪的问题。我在 rails-api 应用程序的上下文中使用 ember。以下代码产生了一个非常意外的结果
<script type="text/x-handlebars" data-template-name="index">
{{input type="text" value=value action="doSomething"}}
<button {{action doSomething }}>Button</button>
</script>
当我在输入字段中输入内容并按“返回”时调用该操作,但单击按钮时不会调用该操作。使这种行为更加奇怪的是,当我将它放入 JSFiddle 时,相同的车把模板可以工作。因此,我怀疑问题出在我的 Rails 应用程序中。
我的 Rails 视图如下所示:
<html lang='en'>
<head>
<%= stylesheet_link_tag :application, :media => :all %>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0/handlebars.min.js"></script>
<script src="//builds.emberjs.com/beta/ember.js"></script>
<script src="//builds.emberjs.com/beta/ember-data.js"></script>
<%= javascript_include_tag :application %>
<title>Title</title>
<script type="text/x-handlebars" data-template-name="index">
{{input type="text" value=value action="doSomething"}}
<button {{action doSomething }}>Button</button>
</script>
</head>
<body>
</body>
</html>
与相应的 application.js
/*
*= require handlebars
*= require_self
*= require store
*= require routes
*= require_tree ./controllers
*= require_tree ./models
*= require_tree ./templates
*= require_tree ./views
*/
App = Ember.Application.create({
LOG_TRANSITIONS: true,
LOG_ACTIVE_GENERATION: true
});
App.IndexController = Ember.ArrayController.extend({
actions: {
doSomething: function() {
alert('doSomething()');
}
}
});
App.ApplicationAdapter = DS.FixtureAdapter.extend();
也许有人有一个想法或提示如何调试此类问题。谢谢!