EmberJs中的模板渲染

时间:2013-07-12 07:47:37

标签: jquery templates events ember.js handlebars.js

在呈现任何模板时,我想知道事件或其他事件。

<script type="text/x-handlebars" id="dashboard">
    <span>username</span><input type="text" id="username" />
    <span>email addr</span><input type="text" id="email" />
</script>

App.Router.map(function() {
    this.resource('index', { path: '/' }, function() {});
    this.resource('dashboard', {path: '/dashboard'}, function() {});
});

App.DashboardController = Ember.ObjectController.extend({})

App.DashboardRoute = Ember.Route.extend({
  renderTemplate: function() {
    this.render('dashboard', {   // the template to render
      controller: 'dashboard'        // the controller to use for the template
    }); 
  }
});

sample.js

function clearObj(){
  $("#username").val("");
  $("#email").val("");
}

我将在渲染仪表板模板时运行clearObj()函数。 我必须使用哪个事件或功能?

我可以通过在地址栏/#/仪表板上输入或点击某个按钮等来转到仪表板模板。

1 个答案:

答案 0 :(得分:1)

可能有帮助的是视图的afterRender挂钩。当这个钩子运行时,你可以确保所有东西都被渲染到DOM中。

例如,订阅didInsertElement中的挂钩并安排对afterRender的呼叫:

App.DashboardView = Ember.View.extend({
  didInsertElement: function() {
    Ember.run.scheduleOnce('afterRender', this, 'processChildElements');
  },

  processChildElements: function() {
    $("#username").val("");
    $("#email").val("");
  }
});

希望它有所帮助。