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获取数据的方法(示例代码中的dummyfor
循环)。不幸的是,日志
属性在实例之间共享,因此每个视图都显示所有其他实例的项,这是为什么?为什么它们不封装到当前实例中
有一个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