检查计算属性

时间:2015-09-15 06:52:50

标签: ember.js ember-data

我正在创建一个用于渲染表的组件。该组件实际上是一组嵌套组件,并在顶层接收路由模型和配置对象,然后在组件内处理并在下一个等中传递/迭代。

最终子组件接收一个模型(表示表中只有一行)以及定义从模型中显示哪个字段的字段名称。

所有这一切都很完美,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。[]'作为单一模型,而不是模型数组。

1 个答案:

答案 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;,不明白为什么?如果有人有更好的解决方案,请发帖,因为我非常不喜欢这些解决方法。