ArrayController 内のオブジェクトに応じてキャンバスを描画するために、ArrayController.content をビューにバインドするにはどうすればよいですか。
jsFiddle - サンプル コード コントローラーの値のバインドは機能していますが、content.values のバインドは機能していません。
質問 1: 概念的な失敗ですか? 問題の詳細情報を見つけることができませんでした。ObjectController では機能しますが、ArrayController では機能しません。
質問 2: Object.values (eq faceColor) が変更された場合、ビューを更新するための最善の解決策は何ですか?
HTML
<script type="text/x-handlebars">
<h1>each</h1>
{{#each App.andonController}}
{{view "App.AndonView"}}
{{faceColor}} {{emotionType}}
{{/each}}
</script>
オブジェクト
App.Andon = Ember.Object.extend({
emotionType: '',
faceColor: '',
});
景色
ArrayController の各オブジェクトに対してキャンバス内に要素を描画したいと思います
App.AndonView = Ember.View.extend({
tagName: "canvas",
attributeBindings: ['height', 'width'],
height: 100,
width: 100,
controllerBinding:'App.andonController.content',
faceColorBinding: 'content.faceColor',
emotionTypeBinding: 'content.emotionType',
didInsertElement: function(){
this.drawSmiley();
},
arrayDidChange: function(){
this.drawSmiley();
},
degreesToRadians : function(degrees) {...},
drawSmiley: function(){
...
var faceColor = null;
try {
faceColor = this.get('faceColor');
//alert(faceColor);
} catch (e) {
alert('faceColer is empty')
}
...
}
});
コントローラー
App.andonController = Em.ArrayController.create({
content: [
App.Andon.create(
{
emotionType: 'happy',
faceColor: '#00ff00'
}),
App.Andon.create(
{
emotionType: 'sad',
faceColor: '#665sd'
}
)],
})