私はノックアウトを使用しており、MVVM 構造を維持しようとしており、オブジェクトが相互に依存するようにしようとしています。
これが私が現在持っているものです、優しくしてください、私はまだこれを学んでいます:
モデル、ViewModel、サービスの定義:
var App = window.App || {};
(function(ns, $, ko) {
ns.Models = {};
ns.ViewModels = {};
ns.Services = ns.Services || {};
//Service def
ns.Services.SearchService = function() {
this.SearchByName = function(name, callback) {
$.get("/api/SearchByName/" + name, function(d){
callback(d);
});
};
};
//Model Def
ns.Models.SearchResultModel = function(json) {
var self = this;
ko.mapping.fromJS(json, {}, self);
};
//ViewModel def
ns.ViewModels.SearchResultsViewModel = function() {
var self = this;
self.dataService = new ns.Services.SearchService();
self.SearchResults = ko.observableArray();
self.GetSearchResultsByName = function(name){
self.dataService.SearchByName(name, function(d) {
$.each(d, function(i, e) { self.SearchResults.push(new ns.Models.SearchResultModel(e)); });
});
};
};
}(App, jQuery, ko));
そして、私は現在それを次のように使用できます:
var vm = new App.ViewModels.SearchResultsViewModel();
vm.GetSearchResultsByName("Doe");
ko.applyBindings(vm, document.getElementById("search-results-form"));
これは私の出発点に過ぎずko.applyBindings(...)
、ViewModel のどこかにあるはずです。
それで、私はこれに対して正しい方向に進んでいますか、それとも完全に間違っていますか?