2013-03-16 36 views
2

我已经环顾四周寻找答案,但我已经干起来了。我想要做的是在特定的视图模型中有一个事件处理程序,它侦听Breeze中的实体被添加或删除,以便视图模型可以对它正在管理的数组采取适当的操作。这样的事件是否存在?实体被添加或删除时,Breezejs中是否有事件被触发?

我有一个工作视图模型,用于我的工作视图,其中包含其他属性,Job实体的ko.observableArray以及NewJob视图的NewJob视图模型。两个视图模型共享相同的数据服务。我想简单地使用NewJob视图模型中的DataService向Breeze中插入一个新的Job实体,然后让Jobs视图模型简单地订阅一个事件,以便知道将新的Job添加到它的Jobs数组中。

TIA

回答

2

微风EntityManager提供了可用于像这样的entityChanged event

var em = new EntityManager({serviceName: "api/NorthwindIBModel" }); 
em.entityChanged.subscribe(function(changeArgs) { 
    // This code will be executed any time any entity within the entityManager is added, 
    // modified, deleted or detached for any reason. 
    var action = changeArgs.entityAction; 
    var entity = changeArgs.entity; 
    // .. do something to this entity when it is changed. 
}); 
+0

Performancewise woudn't它是最好有独立的事件,而不必用户检查entityAction? – 2016-10-10 18:39:43

+0

问题在于许多常见用例都需要使用相同的代码路径处理多个不同的操作。即追踪变化意味着跟踪添加/修改和删除但不分离,并且该代码将更难以为每个动作创作单独的事件。 ...到目前为止,我们从未在任何大型微风应用程序中看到明显的性能影响,其中一些应用程序正与缓存中的数千个实体同时工作。 – 2016-10-10 20:07:48

相关问题