ビュー モデル内で定義されたメソッドへのアクセスに問題があります。
以下は、ビュー モデルの定義です。
ProductMenu = function (name, subProductsMenu1, selectedMenu) {
name = ko.observable(name);
submenu = ko.observableArray(subProductsMenu1);
selectedProductName = ko.observable();
};
ProductSubMenu = function () {
submenuName = ko.observable();
submenu2 = ko.observableArray([]);
selectedSubMenuName = ko.observable();
};
ProductSubMenu2 = function () {
submenu2Name = ko.observable();
properties = ko.observableArray([]);
selectedSubMenu2Name = ko.observable();
};
Properties = function () {
productName = ko.observable();
shortDesc = ko.observable();
longDesc = ko.observable();
additionalDocs = ko.observableArray([]);
};
var MainViewModel = function () {
productModel = new ProductMenu();
subMenuModel = new ProductSubMenu();
submenu2Model = new ProductSubMenu2();
propertyModel = new Properties();
AllProductsModel = ko.observableArray([]);
ReturnToFamilyProduct = ko.observable(true);
ShowSubMenu = ko.observable(false);
showSubMenu2 = ko.observable(false);
ShowBackBtnOnSubMenuClick = ko.observable(false);
IfDocumentsPresent = ko.observable(true);
//to add product to products array
AddProducts = function (name, subProductsMenu1, selectedMenu) {
this.AllProductsModel.push(new ProductMenu(name, subProductsMenu1, selectedMenu));
};
};
$(document).ready 関数で、ビュー モデル メソッドにアクセスしようとしています。コードを以下に示します。
var VM;
$(document).ready(function () {
VM = new MainViewModel();
ko.applyBindings(VM);
FetchProductFamiliesForProductsKO();
});
function FetchProductFamiliesForProductsKO() {
$.getJSON(GetPath('/FetchProduct'), {}, function (data) {
for (var i = 0; i < data.length; i = i + 1) {
var family = data[i];
VM.AddProducts(family, null, family);
}
}).error(function () {
console.log("Error occured");
});enter code here
};
関数 "FetchProductFamiliesForProductsKO" でエラーが発生しました: uncaught typeerror: object[object object] has no method 'AddProducts'.
MainViewModel メソッドにアクセスする方法は? View モデルの定義は正しいですか? MainViewModelを初期化する方法は?
前もって感謝します。