javascript - 如何触发 itemController 中定义的 Emberjs 操作

标签 javascript ember.js ember-controllers

有没有办法触发 itemController 中定义的操作。当我用 <button {{action 'inItem' }}> 触发操作时,它会抛出未捕获错误:没有处理事件“inItem”。。如果我使用 <button {{action 'inItem' target=item}}> 设置操作目标,它会抛出错误,Uncaught TypeError:无法读取未定义的属性“apply”

如何触发 itemController 中定义的操作。

App = Ember.Application.create({
  LOG_TRANSITIONS: true
});

App.Router.map(function(){
   this.resource('posts');           
               
 });

App.PostsRoute = Ember.Route.extend({
  model: function(){
    return [
      {title: 'success'},
      {title: 'winning'},
      {title: 'breakthrough'}
    ];
  }
  
});

App.PostsController = Ember.Array.extend({
  itemController: 'post'
});
App.PostController = Ember.ObjectController.extend({
  isSelected: false,
  
  actions: {
    inItem: function(){
       this.set('isSelected', true);
      //alert('hi');
    }
  }
  
});
<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0/handlebars.js"></script>
<script src="http://builds.emberjs.com.s3.amazonaws.com/tags/v1.0.0/ember.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <script type='text/x-handlebars' id='application'>
    {{#link-to 'posts'}} All posts {{/link-to}}
    {{outlet}}
   </script>
  
   <script type='text/x-handlebars' data-template-name='posts'>
   
     <br>
     {{#each item in controller }}
         
       {{#if item.isSelected}}
         {{item.title}}
       {{/if}}
       
       <br>
       
       <button {{action 'inItem' target=item}} {{bind-attr class="isSelected"}}> call itemcontroller action </button>


     {{/each}}
     
     
  </script>
    
</body>
</html>

最佳答案

您的 Controller 应该扩展ArrayController,而不是Array

App.PostsController = Ember.ArrayController.extend({
  itemController: 'post'
});

http://emberjs.jsbin.com/nabuwo/1/edit

关于javascript - 如何触发 itemController 中定义的 Emberjs 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26128810/

相关文章:

javascript - 尝试制作输入按钮 'clickable'

javascript - 使用 jQuery 专注于第一个可见和空的选择/下拉

javascript - 从 DS.RESTAdapter 获取 api 数据到模型中

javascript - Ember js PushObject 覆盖数组

javascript - 播放音乐

javascript - 匹配路径和文件名的正则表达式,可选的扩展名,无换行符,忽略注释

javascript - 避免展示新模型本身

javascript - 这个 Ember.js handlebars if 语句有什么问题?

ember.js - Ember 将模型传递给 transitionToRoute