Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/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同一视图和pushObject方法的多个实例_Ember.js_Push_Handlebars.js - Fatal编程技术网

Ember.js Ember同一视图和pushObject方法的多个实例

Ember.js Ember同一视图和pushObject方法的多个实例,ember.js,push,handlebars.js,Ember.js,Push,Handlebars.js,我想使用同一个视图的多个实例来显示来自不同来源的相同类型的数据(只是logger检查一些distance app实例),我创建了一个简单视图,其中包含空的日志数组和使用AJAX获取数据的方法(示例代码中的dummyfor循环)。不幸的是,日志属性在实例之间共享,因此每个视图都显示所有其他实例的项,这是为什么?为什么它们不封装到当前实例中 有一个JSFIDLE显示了我的问题: 这是代码: HTML: 埃卢记录器 {{{#view App.SomeLogger id=“logger1”}{{{/v

我想使用同一个
视图的多个实例来显示来自不同来源的相同类型的数据(只是logger检查一些distance app实例),我创建了一个简单视图,其中包含空的
日志
数组和使用AJAX获取数据的方法(示例代码中的dummy
for
循环)。不幸的是,
日志
属性在实例之间共享,因此每个视图都显示所有其他实例的项,这是为什么?为什么它们不封装到当前实例中

有一个JSFIDLE显示了我的问题:

这是代码:

HTML:


埃卢记录器
{{{#view App.SomeLogger id=“logger1”}{{{/view}}
{{{#view App.SomeLogger id=“logger2”}{{{/view}}
{{{#view App.SomeLogger id=“logger3”}{{{/view}}
ID:{view.elementId}
    {{{#视图中的每个日志.logs}
  • {{log.txt}
  • {{/每个}}
      App=Ember.Application.create({rootElement:#main}); App.SomeLogger=Ember.View.extend({ layoutName:“记录器模板”, 日志:[], init:函数(){ 这个; var inst=此; setTimeout(函数(){inst.readLogs()},500); }, readLogs:function(){ var inst=此; var logs=inst.get(“logs”);
      对于(var i=1;i发生这种情况是因为您在
      SomeLogger
      类中声明了一个共享数组实例。您需要在
      init
      中创建它,这样创建的每个新
      SomeLogger
      都将拥有自己的
      日志
      数组

      App.SomeLogger = Ember.View.extend({
          layoutName: 'logger-template',
          logs: null,
          init: function () {
              this._super();
              this.set('logs', []); // each new SomeLogger created will have your own array
              var inst = this;
              setTimeout(function(){ inst.readLogs() }, 500);
          }, 
          readLogs: function(){
              var inst = this;
              var logs = inst.get("logs");
              for (var i = 1; i <= 3; i++) {
                  logs.pushObject({txt: 'Log no.: ' + i + " in: " + inst.get("elementId")});
              }
          }
      
      });
      
      App.SomeLogger=Ember.View.extend({
      layoutName:“记录器模板”,
      日志:null,
      init:函数(){
      这个;
      this.set('logs',[]);//创建的每个新SomeLogger都有自己的数组
      var inst=此;
      setTimeout(函数(){inst.readLogs()},500);
      }, 
      readLogs:function(){
      var inst=此;
      var logs=inst.get(“logs”);
      
      对于(var i=1;i发生这种情况是因为您在
      SomeLogger
      类中声明了一个共享数组实例。您需要在
      init
      中创建它,这样创建的每个新
      SomeLogger
      都将拥有自己的
      日志
      数组

      App.SomeLogger = Ember.View.extend({
          layoutName: 'logger-template',
          logs: null,
          init: function () {
              this._super();
              this.set('logs', []); // each new SomeLogger created will have your own array
              var inst = this;
              setTimeout(function(){ inst.readLogs() }, 500);
          }, 
          readLogs: function(){
              var inst = this;
              var logs = inst.get("logs");
              for (var i = 1; i <= 3; i++) {
                  logs.pushObject({txt: 'Log no.: ' + i + " in: " + inst.get("elementId")});
              }
          }
      
      });
      
      App.SomeLogger=Ember.View.extend({
      layoutName:“记录器模板”,
      日志:null,
      init:函数(){
      这个;
      this.set('logs',[]);//创建的每个新SomeLogger都有自己的数组
      var inst=此;
      setTimeout(函数(){inst.readLogs()},500);
      }, 
      readLogs:function(){
      var inst=此;
      var logs=inst.get(“logs”);
      对于(var i=1;i