javascript - 获取 Handlebars 和 Ember 中元素的值

标签 javascript jquery ember.js handlebars.js

我正在使用 Handlebars.Js 和 Ember 制作一个小型应用程序。首先Handlebars生成模板

{{#each model}}
    <div class="media">
        {{#if isVoted}}
            <a id="voteb" class="pull-left" href="#" {{action 'voteup'}}>
             <i class="glyphicon glyphicon-chevron-down"></i>
              <span id="votec">{{votecount}}</span>
             </a>
         {{else}}
               <a id="voteb" class="pull-left" href="#" {{action 'votedown'}}>
               <i class="glyphicon glyphicon-chevron-up"></i>
               <span id="votec">{{votecount}}</span>
                </a>  
         {{/if}}
         <div class="media-body col-md-offset-1">
              <h4 class="media-heading"><a id="linkt">{{title}}</a></h4>
          </div>
      </div>
 {{/each}}

所以有投票向上向下按钮,当单击按钮时,Ember 中会触发操作

App.IndexController = Ember.ObjectController.extend({

actions: {
    voteup: function(){
        this.set('isVoted' , true);
},
    votedown: function(){
        this.set('isVoted' , false);
}
}

});

这将更改按钮的投票或未投票状态。

但是,它不会更改按钮的投票/未投票状态。我在控制台中没有收到任何错误。那么这里有什么问题呢?

还请告诉我一种方法来检测单击了哪个投票按钮,因为会有很多?

谢谢

最佳答案

{{#each}} 循环遍历数组,因此应该是 ArrayController 例如。

App.IndexController = Ember.ArrayController.extend({
})

虽然每个媒体项都需要有自己的属性,所以应该使用 ObjectController 例如

App.MediaController = Ember.ObjectController.extend({
  isVoted: false,

  actions: {
    voteup: function(){
      this.set('isVoted' , true);
    },
    votedown: function(){
      this.set('isVoted' , false);
    }
  }
});

您可以通过各种不同的方式实现这一点,其中一种是将其封装在组件中,但在这种情况下,最简单的可能是告诉ArrayController使用您定义为 itemControllerObjectController 例如

App.IndexController = Ember.ArrayController.extend({
  itemController: 'media'
})

这是一个有效的 JSBin 示例:http://jsbin.com/sufudo/2

关于javascript - 获取 Handlebars 和 Ember 中元素的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26094799/

相关文章:

javascript - 使用属性 maxlength/size 更改 ember js 中的文本字段高度?

ember.js - Ember Simple Auth 身份验证后的不同重定向

javascript - EmberJS 模板组件突然不在页面上呈现

javascript 字符串到时间和 am/pm 格式

javascript - mock fs.readFile - 单元测试

javascript - JQuery/HTML5 : Organisational Chart, 如何使用此插件正确删除节点?

c# - 在 Watin 中,如何等待表单被服务器处理?

javascript - 尝试将 jQuery get 请求转换为可解析对象

javascript - 按下按钮时动画滚动

javascript - 使用 select2 的动态选择选项不起作用