मैंने हाल ही में requjs के साथ काम करना शुरू कर दिया है और जब मैं एक साधारण व्यूमोडेल बनाने की कोशिश करता हूं तो मुझे एक अजीब अपवाद मिलता है। अपवाद नॉकआउट-2.1.0.जेएस फ़ाइल से आता है और अपवाद है "केवल सदस्यता लेने योग्य चीजें निर्भरता के रूप में कार्य कर सकती हैं"।नॉकआउट व्यूमोडेल और requjs
define("PageViewModel", ["knockout-2.1.0"], function(ko) {
return function PageViewModel() {
var self = this;
self.visiblePage = ko.observable("StartPage");
self.showPage = function (pageName) {
self.visiblePage(pageName);
};
};
});
आप viewmodel देख सकते हैं extremly आसान है और के बाद से त्रुटि नॉकआउट js फ़ाइल में है, यह requirejs एकदम सही ढंग से काम कर रहा है की तरह लगता है। मैं देख रहा हूं: http://knockoutjs.com/documentation/amd-loading.html लाइन पर आने पर अपवाद होता है: self.visiblePage = ko.observable ("StartPage");
मैं क्या गलत कर रहा हूं पर कोई विचार?
धन्यवाद, लुडविग
अद्यतन:
define("ViewModelFactory", ["StorageService", "PageViewModel", "AddUnitViewModel", "AddRoomViewModel"],
function (StorageService, PageViewModel, AddUnitViewModel, AddRoomViewModel) {
//var repositoryStorage = new StorageService();
var createAddRoomVM = function() {
var vm = new AddRoomViewModel();
vm.setRepository = StorageService.getRoomRepository();
return vm;
};
var createAddUnitVM = function() {
var vm = new AddUnitViewModel();
vm.setRepository = StorageService.getUnitRepository();
return vm;
};
var createPageVM = function() {
var vm = new PageViewModel();
return vm;
};
return {
createPageVM:createPageVM,
createAddRoomVM: createAddRoomVM,
createAddUnitVM: createAddUnitVM
};
});
और मॉड्यूल कारखाने
define("ApplicationViewModel", ["ViewModelFactory"],
function (viewModelFactory) {
mainVM = null;
var initVM = function() {
mainVM = {
page: viewModelFactory.createPageVM(),
addRoom: viewModelFactory.createAddRoomVM(),
addUnit: viewModelFactory.createAddUnitVM()
};
};
var getVM = function (viewName) {
switch (viewName) {
case "AddRoom":
return mainVM.addRoom;
case "AddUnit":
return mainVM.addUnit;
default:
return null;
}
};
var getPageVM = function() {
return mainVM.page;
};
return {
initVM: initVM,
getVM: getVM,
getPageVM: getPageVM,
mainVM: mainVM
};
});
और वर्ग applicationViewModel युक्त बुला: यह pageviewmodel युक्त मॉड्यूल है:
define("Bootstrapper", ["knockout-2.1.0", "Routing", "ApplicationViewModel"],
function (ko, routing, applicationViewModel) {
var run = function() {
applicationViewModel.initVM(); <-- after here mainVM.page is null
var mainVM = applicationViewModel.mainVM;
routing.initRouting(applicationViewModel);
ko.applyBindings(mainVM);
routing.showView("StartPage");
alert("Start");
};
return {
run: run
};
})
क्या आप अपना कोड भी पोस्ट कर सकते हैं जहां आप अपना 'पेज व्यू मॉडेल' और शायद आपका व्यू कोड भी इस्तेमाल करते हैं? – nemesv
कोओ स्रोत कोड के अनुसार, लाइन 956 में, यह अपवाद होता है जब संपत्ति विश्वसनीय नहीं होती है। – Ray
संपत्ति सब्सक्राइब करने योग्य होनी चाहिए क्योंकि यह केवल एक नियमित चर है मुझे लगता है ... – user1842278