同じものの多くのインスタンスを使用してview
、さまざまなソースから同じ種類のデータを表示したい (ロガーがいくつかの距離アプリ インスタンスをチェックするだけ)、logs
AJAX を使用してデータを取得するための空の配列とメソッドを含む単純なビューを作成しました (for
サンプル コードのダミー ループ) )。残念ながらlogs
、プロパティはインスタンス間で共有されるため、すべてのビューに他のすべてのインスタンスのアイテムが表示されます。なぜですか? 現在のインスタンスにカプセル化されていないのはなぜですか?
私の問題を示す JsFiddle があります: http://jsfiddle.net/biesior/wYGLT/
コードは次のとおりです。
HTML:
<div id="main"></div>
<script type="text/x-handlebars">
ellou' Logger
{{#view App.SomeLogger id="logger1"}}{{/view}} <br>
{{#view App.SomeLogger id="logger2"}}{{/view}} <br>
{{#view App.SomeLogger id="logger3"}}{{/view}} <br>
</script>
<script type="text/x-handlebars" data-template-name="logger-template">
<h1>ID: {{view.elementId}}</h1>
<ul>
{{#each log in view.logs}}
<li>{{log.txt}}</li>
{{/each}}
<ul>
</script>
<script>
App = Ember.Application.create({ rootElement: "#main"});
App.SomeLogger = Ember.View.extend({
layoutName: 'logger-template',
logs: [],
init: function () {
this._super();
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")});
}
}
});
</script>