誰かがこれで私を悲惨な状況から救ってくれるなら、私は大いに感謝します.
私は配列を持っています:
データ
var test = [{"name":"Kober Ltd","town":"Bradford","type":"Z1CA","number":3650645629},
{"name":"Branston Ltd.","town":"Lincoln","type":"Z1CA","number":3650645630}]
そして、この情報を collectionView 内の子要素としてレンダリングしたい:
コレクションビュー
App.ThreeView = Ember.CollectionView.extend({
itemViewClass: Ember.View.extend({
click: function(){
alert('hello')
},
classNames: ['element','foobar'],
templateName: 'foo'
})
})
ここに私のコントローラーがあります:
コントローラ
App.ThreeController = Ember.ArrayController.extend({
content: [],
init: function(){
var me = this;
$.each(test,function(k,v){
var t = App.ThreeModel.create({
name : v.name,
town: v.town,
type: v.type,
number: v.number
})
me.addObject( t )
})
console.log( me.content )
}
})
テンプレート:
<script type="text/x-handlebars" data-template-name="application">
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="three">
</script>
<script type="text/x-handlebars" data-template-name="foo">
<div class="symbol"> {{ view.content.type }} </div>
<div class="number"> {{ view.content.number }} </div>
<div class="name"> {{ view.content.name }} </div>
<div class="town"> {{ view.content.town }} </div>
</script>
私は最新の Ember so...V2 ルーターを使用しており、すべてのパーツを「Three」という名前で同期しています。配列をビューに直接配置すると、すべてが機能します。
App.ThreeView = Ember.CollectionView.extend({
content: test, // manually added a pure array into view content
itemViewClass: Ember.View.extend({
click: function(){
alert('hello')
},
classNames: ['element','foobar'],
templateName: 'foo'
})
})
しかし、Ember.jsオブジェクトを使用してこれを「適切に」実行しようとすると、レンダリングされたビューが得られません(空のアプリケーションビューを除いて)。
ビューからコントローラーに「contentBinding」を追加して、接続を強制できるかどうかを確認するなど、回避策を試しましたが、それでも何もしません。Three.js を使用してレンダリングされたコンテンツを取得し、さらに操作しているため、コンテナーを介してビューをレンダリングすることが重要です。
要約すると、ビューで純粋な配列をレンダリングできますが、コントローラーからは何も渡されませんでした。ちなみに、initでコンソールログの内容を記録できるので、コントローラーは間違いなく設定されています。ビュー名を変更すると、コントローラーがインスタンス化されないため、名前空間が機能していることがわかります。
前もって感謝します!