Ember.js 绑定数据-输入辅助对象中的属性

Ember.js 绑定数据-输入辅助对象中的属性,ember.js,Ember.js,如何在当前版本的Ember中绑定数据-属性作为输入助手 DEBUG: ------------------------------- DEBUG: Ember : 2.2.0 DEBUG: Ember Data : 2.2.1 DEBUG: jQuery : 1.11.3 DEBUG: Ember Simple Auth : 1.0.0 DEBUG: ------------------------------- 这是我的助手,但是数

如何在当前版本的Ember中绑定
数据-
属性作为
输入
助手

DEBUG: -------------------------------
DEBUG: Ember             : 2.2.0
DEBUG: Ember Data        : 2.2.1
DEBUG: jQuery            : 1.11.3
DEBUG: Ember Simple Auth : 1.0.0
DEBUG: -------------------------------
这是我的助手,但是
数据-
属性被删除

{{input id="price-slider" name="title" type="text" value=model.price data-slider-id="ex1Slider" data-slider-min=model.minPrice data-slider-max=model.maxPrice data-slider-step=model.priceStep data-slider-value=model.price}}

默认情况下,不会传播数据属性。您可以重新打开TextField组件来传播您想要的所有数据属性,但请查看官方指南

或者,如果希望自动继承所有数据属性,则可以重新打开TextField组件或将其子类化,使其在默认情况下传播所有数据属性:

Ember.TextField.extend({
  init: function() {
    this._super();
    var self = this;

    Object.keys(this).forEach(function(key) {
      if (key.substr(0, 5) === 'data-') {
        self.get('attributeBindings').pushObject(key);
      }
    });
  }
});

您可以使用普通的括号输入,只需演示绑定的工作(不确定,但数据属性不应该随它们一起丢失) 在模板中

<input onkeyup={{action 'inputChange' value='target.value'}}>
<input value={{inputVal}}>

顺便说一句,如果您想要滑块功能,请查看,

为什么需要的数据属性?对于这种情况,您可以使用常规括号(尖括号)guess@Bek:我只需要它们,我不知道,让我的滑块库获得初始化滑块组件所需的数据-参数,或者其他任何东西,真的,没关系。我只需要它们。@Bek:你说我可以用“普通的尖括号”。如果余烬
{{input}}
帮助程序不提供任何值,我很乐意使用“常规尖括号”,并忘记它。与
相比,
{input}}
提供的值是多少?为什么您认为我可以使用后者?@gonvald
{input}
之间的差异随着余烬的发展正在慢慢消失,即使现在您可以使用具有与花括号相同功能的尖括号输入,看看我的答案,试着用那种方法,我想应该行得通,谢谢,对不起,但那太疯狂了。Ember正在使用带有ES6语法的Ember cli,指南中的语法似乎是旧的全局语法。如何在ember cli项目中重新打开文本字段?我应该把它放在哪个文件、目录中?更重要的是:为什么数据属性没有传播?根本的问题是什么?下面是如何重新打开内置类:我认为默认情况下不传播数据属性的原因是这对性能有害,因为在组件初始化时,您必须检查所有传递的属性。您可以将代码放在任何地方,请检查此旋转:通常,一个初始值设定项是应该去的地方。在这种情况下,我强烈建议您对组件进行子类化,并在模板中使用您自己的版本,以提高可读性/可维护性。谢谢,我会尝试一下。在ember文档中是否有关于向常规括号输入的转换的描述?
export default Ember.Controller.extend({
  inputVal: 'hello',
  actions: {
    inputChange(val) {
      this.set('inputVal', val);
    }
  }
});