Ember.js隐藏时重新选择并重新显示

时间:2014-10-14 15:11:16

标签: javascript jquery ember.js handlebars.js ember.select

我有一个整数属性,它绑定到多个输入字段。第一个是range类型,第二个是number,第三个是Ember.Select视图。这些字段基于条件{{#if visible}}可见。当我移动滑块然后通过设置visible = false隐藏字段,然后通过设置visible = true再次显示它们时,绑定值属性将重置为null

此处示例:http://emberjs.jsbin.com/zukukiloseqi/4/edit?html,js,output

在上面的示例中,尝试移动滑块,然后单击“隐藏”,然后单击“显示”。请注意绑定属性重置为null。另请注意,如果您没有触摸滑块并仅使用Ember.Select设置绑定属性,则一切正常。最后,当我完全省略Ember.Select字段时,它也可以正常工作。

这里发生了什么以及如何防止该属性被重置?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

问题在于NumberString之间的转换。 HTML <input>元素始终存储值的字符串表示形式。请参阅此答案:Data binding: property of model object changes from integer to string

我按照以下方式更改了控制器,它似乎每次都有效(http://emberjs.jsbin.com/zukukiloseqi/9/):

App.IndexController = Ember.Controller.extend({
    bindvalue:'10',
    visible: true,
    numbers: function() {
      var arr = [];
      for (var i = 0; i <= 64; ++i) {
        arr.push(''+i);
      }
      return arr;
}.property(),
actions:{
  test:function(){
    alert(this.get("bindvalue"));    
  },

  toggle: function() {
    this.set('visible', !this.get('visible'));
  }
}
});