在我的应用程序中,我有以下rawNodes
属性,我将其用作应用程序范围的缓存:
var App = Ember.Application.createWithMixins({
...
/**
The rawNodes property is a nodes deposit to be used
to populate combo boxes etc.
**/
rawNodes: null,
getNodes: function () {
if (!this.rawNodes) {
this.rawNodes = this.Node.find();
}
},
...
});
在我的一些控制器中,我正在修改数据,这些数据也应在此通用缓存中更新。我想实现几个函数,更新给定节点,并删除给定节点。类似的东西:
updateNode: function(node_id, node) {
this.rawNodes.update(node_id, node);
},
deleteNode: function(node_id) {
this.rawNodes.delete(node_id);
}
但我真的不知道如何使用ArrayController,即使这些操作完全没有。我在ArrayController documentation中没有看到这种程序的例子。有人可以提供一个例子,还是指出我正确的方向?
答案 0 :(得分:1)
我认为它可能更有用,而不是使用rawNodes
属性
维护Node
模型和NodesController
。分配model
属性
使用setupController
,这样您就可以确保始终获取节点。
由于这是一个应用程序范围的缓存,请在needs
中使用ApplicationController
,以便它可以委托给它的方法。
App.ApplicationRoute = Em.Route.extend({
setupController: function() {
this.controllerFor("nodes").set("model", App.Node.find());
}
});
App.ApplicationController = Em.Controller.extend({
needs: "nodes",
});
App.NodesController = Em.ArrayController.extend({
getNodes: function() {
// ...
}
});
App.NodeController = Em.ObjectController.extend({
updateNode: function() {
// ...
},
deleteNode: function() {
// ...
}
});