我被困在项目的一个特定部分,该部分由标题中提到的组件组成。
我目前有一个按我希望的方式工作的概念证明:
- Sammy 已集成到淘汰赛视图模型中(根据淘汰赛网站上的教程)
- 视图由控制器按需加载(因此我不必在应用程序页面上定义每个视图)
在我目前的情况下,我在应用程序启动时实例化视图模型(如果我不实例化它们,Sammy 将不会处理路由)。问题是 Sammy 加载和交换视图的位置。我必须调用 ko.applyBindings 才能让 KO 绑定到视图。但是反复调用应用程序是不好的做法。
我的问题是,如何绑定到按需加载的视图?我不能调用 ko.applybindings ,因为当视图多次加载时会造成内存泄漏。
这是一个带有违规 ko.applyBindings 的示例 VM:
function serviceInfoVm() {
var self = this;
self.ObjectKey = ko.observable();
self.Service = ko.observable();
self.LoadService = function () {
$.get('ServiceData/Detail', { serviceId: self.ObjectKey() }, function (data) {
self.Service(data);
});
};
$.sammy('#content', function () {
this.get('#/service/:id', function (context) {
var ctx = context;
self.ObjectKey(this.params['id']);
self.LoadService();
$.get('Content/ServiceInfo', function (view) {
ctx.app.swap(view);
ko.applyBindings(self);
});
});
}).run();
};
有人对此问题有一些指示和/或解决方案吗?