Javascript 当余烬模板更改时运行jQuery
My index.html有一个Javascript 当余烬模板更改时运行jQuery,javascript,jquery,ember.js,Javascript,Jquery,Ember.js,My index.html有一个posts模板和一个post模板。帖子模板是一系列链接,这些链接将更改post模板中显示的帖子。我的一些帖子的内容需要使用jQuery进行调整。如何在每次显示在post模板中的帖子更改为不同的帖子时运行jQuery代码?假设您有一个帖子路由,则每次为其路由提供新模型时都会运行setupController App.PostRoute = Ember.Route.extend({ setupController: function(controller, mod
posts
模板和一个post
模板。帖子模板是一系列链接,这些链接将更改post
模板中显示的帖子。我的一些帖子的内容需要使用jQuery进行调整。如何在每次显示在post
模板中的帖子更改为不同的帖子时运行jQuery代码?假设您有一个帖子路由,则每次为其路由提供新模型时都会运行setupController
App.PostRoute = Ember.Route.extend({
setupController: function(controller, model){
this._super(controller, model);
Ember.run.scheduleOnce('afterRender', function(){
alert('post has changed, and it\'s been rendered change away');
});
}
});
因为这通常会让我感到有点内疚(在路由中添加视图逻辑),所以您可以在控制器上观察模型(从视图或控制器中,每次模型更改时都会触发类似的逻辑。您可能需要按此路线对其进行节流,我非常确定它将触发两次,将其置空,并将其设置为不同的项
App.PostView = Ember.View.extend({
watchModel: function(){
Ember.run.scheduleOnce('afterRender', function(){
alert('color has changed, and it\'s been rendered change away');
});
}.observes('controller.model')
});
非常感谢!我在这个问题上陷入了一段时间。我得到了第一个解决方案。我将尝试让第二个解决方案发挥作用,但我还不确定我是否理解。我从未为帖子模板创建过视图。ember知道如何将
App.PostView
与帖子模板关联吗?还是需要用{{#查看后视图}
?现在页面中的post如何?它是路由器的一部分吗?如果是这样,Ember将自动使用App.PostRoute、App.PostController和App.postViews。我在index.html中有
,在App.js中有App.PostController和App.PostRoute
,但我没有创建视图。从视图中观察模型确实会触发两次。我很抱歉不确定这是否可靠,但通过检查视图的状态是否为preRender
,然后只运行jquery,我可以将其过滤到1次