我正在创建一个用于渲染表的组件。该组件实际上是一组嵌套组件,并在顶层接收路由模型和配置对象,然后在组件内处理并在下一个等中传递/迭代。
最终子组件接收一个模型(表示表中只有一行)以及定义从模型中显示哪个字段的字段名称。
所有这一切都很完美,UI更新与模型绑定。我遇到的问题是模型更新没有被推送到UI。在我的子组件中,我使用以下命令绑定到UI元素:
tdVal : function(){
return this.get('data').get(this.get('details').get('field'));
}.property()
tdValUpdated : function(){
this.get('data').set(this.get('details').get('field'),this.get('val'));
}.property('tdVal'),
正如您所看到的,tdVal没有计算属性文字集,这就是模型更新没有被推送到UI的原因。如果我要给它一个字面值,例如'data.status',那么模型的状态更新将被推送到UI。
我可以使用什么字面值来计算模型中的任何属性更改?
我尝试了'data.isUpdated','data.isSaving'等。我不能使用'data。[]'作为单一模型,而不是模型数组。
答案 0 :(得分:0)
好的,经过多次试验和错误后,我想我已经找到了解决方法。它很乱,我对此不太满意:
<?=$this->title?>
我确实尝试了以下内容:
//as previous I render the the appropriate value from the model as defined
//by the passed in config object
tdVal : function(){
return this.get('data').get(this.get('details').get('field'));
}.property(),
//then detect UI changes and push to model if required
tdValUpdated : function(){
this.get('data').set(this.get('details').get('field'),this.get('val'));
}.property('tdVal'),
//Then I observe any changes to model isSaving and directly set tdVal with
//the value of the field for the current td
generalUpdateCatch: function() {
this.set('tdVal',this.get('data').get(this.get('details').get('field')));
}.observes('data.isSaving'),
但是得到错误:&#39; Uncaught TypeError:不支持的内容&#39;,不明白为什么?如果有人有更好的解决方案,请发帖,因为我非常不喜欢这些解决方法。