Ember.js选择在隐藏并再次显示时重置

Ember.js Select resets when hidden and shown again

本文关键字:显示 js 选择 隐藏 Ember      更新时间:2023-09-26

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

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

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

这里发生了什么,我如何防止属性被重置?

谢谢你的帮助!

问题在于NumberString之间的转换。HTML <input>元素总是存储值的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'));
  }
}
});