我被困在我的項目的一個特定部分,它由標題中提到的組件組成。使用mvc3的單頁面應用程序knockout.js和sammy.js
我現在有一個概念證明的作品,我希望它的工作方式:
- 薩米被整合進入淘汰賽的ViewModels(按照教程 在淘汰賽網站)
- 意見由控制器 按需加載(所以我沒有定義應用程序頁面上的每個單一視圖)我實例
在我目前的狀況的ViewModels應用程序啓動時(如果我這樣做不是實例,Sammy不會處理路由)。問題在於視圖由Sammy加載並交換。我必須打電話給ko.applyBindings以便綁定到視圖。但是它的不好的做法是反覆地申請申請。
我的問題,我如何綁定到我的視圖加載點播?我不能調用ko.applybindings,因爲當視圖加載多次時會造成內存泄漏。
下面是一個例子VM與違規ko.applyBindings:
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();
};
任何人只要有一些指針和/或解決這個問題?
是否有您要使用薩米交換,而不是淘汰賽模板理由嗎?看看html文件插件中的外部模板https://github.com/ifandelse/Knockout.js-External-Template-Engine應該做你需要的東西(如果我理解正確) – 2012-08-06 16:06:58
我想加載視圖動態..但現在放棄了這個想法。在下面看到我自己的答案 – Flores 2012-08-07 07:33:12