我一直在尝试使用Hot Towel SPA,并且成功地使用ko.observables获取视图模型和视图。调用Breeze executeQuery的结果使用myObservable(data.results)加载到observable中,我在视图中看到了结果。
在阅读了Durandal即将发生的变化后,我想我会尝试使用observables插件。我的问题是我的视图中不再出现Breeze结果。我已经阅读了“绑定普通Javascript对象' Durandal中的文档,但这对Breeze和“升级到Durandal 2.0'”并没有帮助。约翰帕帕也没有详细说明。
在使用observable插件时,如何将Breeze EntityQuery的结果导入observable?
有人能指出我正确的方向吗?
答案 0 :(得分:0)
这对杜兰达的作者罗布来说是一个很好的问题。当他最后一次为此工作时,他打算做些什么来让Breeze高兴。不知道他是怎么离开的。
答案 1 :(得分:0)
绝对是Rob的一个。我也会问。与此同时,我正在开展一个项目,我正在使用这些技术,所以可以提供一个指针:
您可以将breeze实体加载到普通的javascript属性中,Durandal会将该属性转换为可观察的属性。然而,它将成为轻微交付的淘汰观察者的容器,因此您需要相应地编码。
在下面的示例中,我使用的是typescript和工作单元模式,但它应该有点熟悉 - 这里的工作单元函数从executeQuery返回一个promise:
public respondent: Respondent;
private loadData(id: string){
var self = this;
this.uow.respondents.withId(id).then(
function(data : Respondent){
self.Respondent = data;
}
).fail(erorrHandler)
};
现在这对我有用。唯一的副作用是,从我有限的经验,我无法得到durandal和knockout在计算的observables或自定义绑定中一起玩 - 所以我不得不在地方使用不同的解决方案(有点击败对象!!)。
@Ward - 我认为你可以过度使用微风将其实体变成可观察物并让durandal处理它(这是Angular的情况吗?) - 但我不知道这是否会对其他微风产生副作用跟踪幕后变化的好东西。另外需要注意的是,如果在调用observables插件后对Durandal Binder做任何事情(比如添加i18n库),则需要重新包含原始绑定设置,以免覆盖它们。 / p>