Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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
Ember.js 控制器中未定义路由中的属性_Ember.js - Fatal编程技术网

Ember.js 控制器中未定义路由中的属性

Ember.js 控制器中未定义路由中的属性,ember.js,Ember.js,在我的Ember hello world应用程序的IndexRoute中,我启动了一个setInterval函数,我希望最终用户可以通过单击模板中的dom元素来关闭该函数,从而触发IndexController中的操作。因此,setIntervalId是在IndexRoute中设置的,我需要将它传递给IndexController中的clearInterval,但按照下面的方式,setIntervalId是未定义的。我还尝试使用App.IndexRoute.setIntervalId,但没有成功

在我的Ember hello world应用程序的IndexRoute中,我启动了一个setInterval函数,我希望最终用户可以通过单击模板中的dom元素来关闭该函数,从而触发IndexController中的操作。因此,setIntervalId是在IndexRoute中设置的,我需要将它传递给IndexController中的clearInterval,但按照下面的方式,setIntervalId是未定义的。我还尝试使用App.IndexRoute.setIntervalId,但没有成功。 我将如何做到这一点

(function() {
  window.App = Ember.Application.create({

   LOG_TRANSITIONS: true,
   LOG_ACTIVE_GENERATION: true 
    });



  App.IndexRoute = Ember.Route.extend({

      setIntervalId: 0, 

      model: function() {
         this.setIntervalId = setInterval(this.someInterval, 5000)
      },
      someInterval: function(){
        var datasource = 'http://hackernews/blahblah';
        return new Ember.$.ajax({url: datasource, dataType: "json", type: 'GET'}).then(function(data){  
             return data; 
        })
      },


});

 App.IndexController = Ember.ObjectController.extend({
     actions: {
          clearTimeout: function(){
            console.log('clearing interval', this.setIntervalId); //undefined
            clearInterval(this.setIntervalId);

         }
         }
    })
})();
模板

<script type="text/x-handlebars" data-template-name="index">>
    <h1>Hi Babe</hi>
        {{ outlet }}
    <label {{action "clearTimeout" on="click"}}>clear timeout</label>
</script> 

要设置模型,需要在管线的模型函数中返回值:

model: function() {
  return this.setIntervalId = setInterval(this.someInterval, 5000)
}
要访问控制器中的模型,您需要使用这个。获取“模型”


谢谢,那么从model函数返回的就是model?是的,就是这个。
actions: {
  clearTimeout: function(){
     console.log('clearing interval', this.get('model');
     clearInterval(this.get('model'));
  }
}