ember.js中的事件处理程序

时间:2016-03-21 12:45:52

标签: javascript jquery ember.js handlebars.js

我正在尝试从Ember.js控制器触发事件​​。我抛出一个错误说“ember.min.js:3未捕获错误:没有处理动作'点击'。如果你确实处理了动作,这个错误可能是由于从控制器中的动作处理程序返回true,导致动作泡泡。“此外,我不清楚事件系统如何为目标行动自行运作。有人可以帮我弄这个吗。这是我的代码:

<!DOCTYPE html>
<html>
   <head>
      <title>Ember.js Application example</title>
      <!-- CDN's -->

      <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.12.0/moment.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/3.0.1/handlebars.min.js"></script>
      <script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>

       <script src="https://cdnjs.cloudflare.com/ajax/libs/ember.js/1.10.0/ember.min.js"></script>
       <script src="http://builds.emberjs.com/tags/v1.10.0-beta.3/ember-template-compiler.js"></script>
       <script src="http://builds.emberjs.com/release/ember.debug.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/ember.js/2.4.3/ember.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/js/bootstrap.min.js"></script>
   </head>
   <body>
      <div class="container" id="github-app">

      </div>       
      <script type="text/x-handlebars" data-template-name="application">
         <div class="row">
            <div class="col-md-12">
                <h1>Hello from Ember!</h1>
                {{outlet}}
            </div>
         </div>      
      </script>

      <script type="text/x-handlebars" data-template-name="index">
      <p>This is a github explorer for all the users.</p>

      <ul>{{#each dev in controller}}
         <li><a href="#">{{dev}}</a></li>
         {{/each}}
      </ul>

      <p>
         <button class="btn btn-success" {{action "clicked"}}>Click Me</button>
      </p>

      <p>{{renderedOn}}</p>
      </script>      

      <script type="text/javascript">
      App = Ember.Application.create({
         rootElement:"#github-app"
      });
      App.IndexRoute=Ember.Route.extend({
         model:function(){
            return [
            "Sam",
            "Sandy",
            "Samudh"
            ];
         }
      });
      App.IndexController = Ember.ArrayController.extend({
         renderedOn : function(){
            return new Date();
         }.property(),
         actions    : {
            clickMe(){
               alert("I been clicked");
            }            
         }

      });
      </script>
   </body>
</html>

也可在http://jsbin.com/cuxajiyuqa/edit?html,output

获取

1 个答案:

答案 0 :(得分:0)

您没有名为“已点击”的操作,并且您告诉您的代码在点击按钮时查找“点击”的操作。改变

{{action "clicked"}} 

进入

{{action "clickMe"}}

或更改

clickMe(){ 

行动进入

clicked(){ 

一切都应该没问题。

检查https://guides.emberjs.com/v2.4.0/templates/actions/以获取有关操作的文档