Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当余烬模板更改时运行jQuery_Javascript_Jquery_Ember.js - Fatal编程技术网

Javascript 当余烬模板更改时运行jQuery

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

My index.html有一个
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次