如何将 ArrayController.content 绑定到视图,以便根据 ArrayController 中的对象绘制画布。
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'
}
)],
})