【问题标题】:Display placeholder text in IE8 after Ember renders templateEmber 渲染模板后在 IE8 中显示占位符文本
【发布时间】:2014-01-08 20:26:55
【问题描述】:

我找到了一个脚本(jquery-placeholder) 来在 IE8 中的表单元素上呈现 HTML 占位符属性。它可以很容易地使用:

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

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

【问题讨论】:

  • emberjs 渲染完成时没有回调吗?

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


【解决方案1】:

正如melc 已经指出的,您应该使用didInsertElement 挂钩来实现此行为。如果您想对所有 TextField 或 TextArea 普遍使用此功能,请考虑使用重新打开方法来修改/增强 Embers 默认实现:

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

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

【讨论】:

    【解决方案2】:

    操作 DOM 的常见位置是在 ember view 类中,在 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')
    });
    

    【讨论】:

      猜你喜欢
      • 2017-10-26
      • 2021-05-21
      • 1970-01-01
      • 2012-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      相关资源
      最近更新 更多