2014-08-28 55 views
1

我看到的最后一个职位emberjs bind data attributes和搜查谷歌发现emberjs
http://emberjs.com/api/classes/Ember.View.html
http://emberjs.com/guides/components/customizing-a-components-element/
链接,但我无法理解如何创建自己的attributebinding。EmberJS attributeBinding

举一个例子(这只是我的假设,可能我会远离真实场景)。请纠正我。

HTML文件包含:
{{视图App.DatePickerView数据dateBinding = “RR”}}

app.js文件包含:

attributeBindings: ["data-date"], 
rr: function() { 
    alert("Hello"); 
}, 

我完全搞砸知道如何属性绑定的作品?

感谢大家提前。

+0

什么是你期待发生在你设置'数据日期'到'rr'?属性绑定通常用于将值传递到视图中。在这个视图中,'this.get('data-date')'的值只是一个字符串'“rr”'。看看这里的控制台标签http://emberjs.jsbin.com/fufuvodupine/1/edit。 – Marc 2014-08-29 03:28:42

+0

我认为你会将绑定数据属性与绑定标准html属性混淆。例如,我经常想在用户无法点击时向链接添加“禁用”类。对于这种情况,您只需在模板中使用''',并在组件(或之前的控制器)中定义布尔函数'isDisabled()'。无论如何,如果你对你想做什么给予更多的解释,我们可以给你更好的建议,告诉你如何在Ember中完成它。 – spinlock 2015-02-18 18:26:58

回答

1

你有没有尝试重新打开您的视图类?

Ember documentation

Ember.LinkView.reopen({ 
    attributeBindings: ['data-toggle'] 
}); 

我也建议转向从添加数据远属性HTML元素,如果可能的话,而不是在灰烬数据模型的使用性能。

0

这是一个真实的例子来跟踪topheight属性和设置为内嵌样式包装DIV

attributeBindings: ['customStyle:style'], 
customStyle: computed('top', 'height', { 
    get() { 
     let top = this.get('top'); 
     let height = this.get('height'); 
     return `top:${top}px; height:${height}px;`; 
    } 
}) 

希望它可以帮助