我们
$patch使用ngResource 实现,但涉及到一点点(我们在服务器端使用Django Rest
framework)。对于您的
diff组件,我将留给您自己实现。我们使用原始缓存来跟踪资源的变化,因此我可以轮询给定的对象并查看发生了什么变化(如果有)。
我利用下划线的
_.pick()方法提取已知字段来保存现有实例,创建副本(以及已知的主键)并使用保存
$patch。
我们还使用一些实用程序类来扩展内置资源。
app.factory 'PartUpdateMixin', ['$q', '_', ($q, _) -> PartUpdateMixin = (klass) -> partial_update: (keys...) -> deferred = $q.defer() params = _.pick(@, 'id', keys...) o = new klass(params) o.$patch(deferred.resolve, deferred.reject) return deferred.promise]
这是用于增强资源的实用程序类。
app.factory 'extend', -> extend = (obj, mixins...) -> for mixin in mixins obj[name] = method for name, method of mixin objapp.factory 'include', ['extend', (extend) -> include = (klass, mixins...) -> extend klass.prototype, mixins... return include]
最后,我们可以增强我们的资源
include TheResource, PartUpdateMixin(TheResource)resourceInstance = TheResource.get(id: 1234)# Later...updatedFields = getChangedFields(resourceInstance)resourceInstance.partial_update(updatedFields...)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)