ember - 控制器操作仅由输入字段调用,而不由按钮调用
ember - Controller action is only called by input field but not by button
我正在尝试开始使用余烬,但我遇到了一个非常奇怪的问题。我在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 应用程序中的某个地方。
我的轨道视图如下所示:
<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>
与相应的应用程序.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();
也许有人有一个想法,或者可能有一个提示如何调试这种问题。谢谢!
在您的轨道视图中,尝试将车把模板放在 body
标签内而不是 head
:
<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>
</head>
<body>
<script type="text/x-handlebars" data-template-name="index">
{{input type="text" value=value action="doSomething"}}
<button {{action doSomething }}>Button</button>
</script>
</body>
</html>
更新以响应您的评论
要跟踪按钮的单击,您可以像这样在IndexView
中注册到 click
事件,并放置一个断点以进一步检查:
App.IndexView = Ember.View.extend({
click: function(event) {
debugger;
}
});
我仍然不知道问题是什么,但是将ember
和ember-data
的包含从index.html.erb
移动到application.js
后,它消失了。我还添加了宝石ember-rails
.
相关文章:
- 调用按钮单击事件 ajax 加载的用户控件
- 未调用按钮事件
- 在另一个C#按钮单击处理程序之前,从OnClientClick函数调用C#按钮处理程序
- 通过javascript ASP.NET MVC下拉列表调用按钮
- jquery ajax 调用按钮单击验证不起作用
- 按 Enter 键并调用按钮函数
- jquery调用按钮集,保持其他一切
- 表单操作调用按钮
- 如何从Ruby/Rails调用按钮的特定实例.each循环,当它们都具有相同的类时
- 如何在创建后的dojoAMD模块中调用按钮点击事件
- __doPostBack()导致了aspx页面中的postback但未调用按钮单击事件
- 从JavaScript asp.net调用按钮点击;不起作用
- 如何从JQuery对话框调用c#按钮事件
- fullcalender不调用按钮点击和内部的任何函数
- 调用按钮从JavaScript
- 我想调用一个方法在一个脚本通过传递参数从javascript函数调用按钮点击从html
- Jquery函数不调用按钮点击
- Onclick事件-使用id以外的东西调用按钮
- JQuery未捕获错误:不能在初始化之前调用按钮的方法;试图调用方法'loading'
- jQuery移动按钮上的调用按钮(“刷新”)会破坏按钮样式