在Ember渲染模板后,在IE8中显示占位符文本

时间:2014-01-08 20:26:56

标签: javascript jquery ember.js internet-explorer-8

我找到了一个脚本(jquery-placeholder)来在IE8中的表单元素上呈现HTML占位符属性。可以使用以下方法轻松调用:

$('input, textarea').placeholder();

由于Ember将渲染这些元素,我需要等到它们被渲染之后再调用这个函数。我可以绑定一个事件吗?也许我可以将它添加到运行循环队列中?

2 个答案:

答案 0 :(得分:2)

正如melc已经指出的那样,你应该使用didInsertElement钩子来实现这种行为。如果您希望通常对所有TextFields或TextArea使用此功能,请考虑使用reopen方法修改/增强余烬默认实现:

Ember.TextField.reopen({
  placeHolderFunction : function(){
    this.$().placeholder();
  }.on('didInsertElement')
});

这将自动调用应用程序中使用的所有Ember.TextField上的占位符方法({{input}}帮助程序使用此方法)。您可以对Ember.TextArea执行相同的操作,以便为textarea元素实现此功能。

答案 1 :(得分:0)

操纵DOM的常见位置是view回调函数中的ember didInsertElement类。

http://emberjs.com/api/classes/Ember.View.html#event_didInsertElement

用法示例

http://emberjs.jsbin.com/AbebUQin/1/edit

App.Test1View = Ember.View.extend({
  didInsertElement:function(){
    alert('test1 view inserted');
  }
});

App.Test2View = Ember.View.extend({
  myFunc:function(){
    alert('test2 view inserted');
  }.on('didInsertElement')
});