Ember.js 如何在不触发网络请求的情况下绑定到hasMany length on Ember数据模型
假设我希望在我的余烬数据模型上有一个名为haschilds的计算属性,如下所示Ember.js 如何在不触发网络请求的情况下绑定到hasMany length on Ember数据模型,ember.js,ember-data,Ember.js,Ember Data,假设我希望在我的余烬数据模型上有一个名为haschilds的计算属性,如下所示 import Ember from 'ember'; import Model from 'ember-data/model'; import { hasMany } from 'ember-data/relationships'; export default Model.extend({ children: hasMany(), hasChildren: Ember.computed('childr
import Ember from 'ember';
import Model from 'ember-data/model';
import { hasMany } from 'ember-data/relationships';
export default Model.extend({
children: hasMany(),
hasChildren: Ember.computed('children.[]', function() {
return this.hasMany('children').ids().length > 0;
})
});
不幸的是,上述操作仍然会触发服务器的跳闸
我能想到的解决方法之一是使用volatile
computed属性
但是,我想知道是否有一种方法可以绑定到hasMany.length,而不触发网络请求。或者可能有一种方法可以绑定到
hasMany.ids
或hasMany.value
。对此不是100%确定,但您是否尝试过Ember.get(this,'children').ids().length
根据为此模型返回的数据,客户端可能不知道该模型有多少子对象。它可以只是一个url来查询以解决关系。在这种情况下,您的选项是:在此查询之前加载子项,以便存储区具有副本并可以确定长度(例如侧加载),或者接受服务器请求。相当肯定,如果我理解正确的话,volatile在这里对您没有帮助。默认行为不是侧载关系吗?所以需要额外的电话才能知道孩子的数量?如何使关系同步<代码>子项:hasMany('children',{async:false})。当然,只有当数据与原始查询一起返回时,这才起作用。这一点不是100%确定的,但是您是否尝试过Ember.get(this'children').ids()。length
根据为此模型返回的数据,客户端可能不知道该模型有多少子对象。它可以只是一个url来查询以解决关系。在这种情况下,您的选项是:在此查询之前加载子项,以便存储区具有副本并可以确定长度(例如侧加载),或者接受服务器请求。相当肯定,如果我理解正确的话,volatile在这里对您没有帮助。默认行为不是侧载关系吗?所以需要额外的电话才能知道孩子的数量?如何使关系同步<代码>子项:hasMany('children',{async:false})。当然,这只有在数据与原始查询一起返回时才起作用