यह एकमात्र दृश्य में बहुत सारे ViewModels के साथ बहुत बड़ी परियोजना को पूरा करने के बाद मेरा जवाब है।
HTML दृश्य
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div id="container1">
<ul>
<li >Container1 item</li>
<!-- ko foreach: myItems -->
<li>Item <span data-bind="text: $data"></span></li>
<!-- /ko -->
</ul>
</div>
<div id="container2">
<ul>
<li >Container2 item</li>
<!-- ko foreach: myItems -->
<li>Item <span data-bind="text: $data"></span></li>
<!-- /ko -->
</ul>
</div>
<script src="js/jquery-1.11.1.js"></script>
<script src="js/knockout-3.0.0.js"></script>
<script src="js/DataFunction.js"></script>
<script src="js/Container1ViewModel.js"></script>
<script src="js/Container2ViewModel.js"></script>
</body>
</html>
इस दृश्य मैं के लिए आईडी = container1 और आईडी = container2 2 दृश्य मॉडल बनाने रहा हूँ दो अलग-अलग जावास्क्रिप्ट फाइलों में लिए।
Container1ViewModel.js
function Container1ViewModel()
{
var self = this;
self.myItems = ko.observableArray();
self.myItems.push("ABC");
self.myItems.push("CDE");
}
Container2ViewModel.js
function Container2ViewModel() {
var self = this;
self.myItems = ko.observableArray();
self.myItems.push("XYZ");
self.myItems.push("PQR");
}
फिर आप इन 2 ViewModels
var container1VM;
var container2VM;
$(document).ready(function() {
if ($.isEmptyObject(container1VM)) {
container1VM = new Container1ViewModel();
ko.applyBindings(container1VM, document.getElementById("container1"));
}
if ($.isEmptyObject(container2VM)) {
container2VM = new Container2ViewModel();
ko.applyBindings(container2VM, document.getElementById("container2"));
}
});
DataFunction.js में के रूप में अलग ViewModels दर्ज कर रहे हैं इस तरह के बाद जोड़ सकते हैं अलग divs के लिए दृश्य संख्या के किसी भी संख्या।लेकिन सुनिश्चित करें कि पंजीकृत div के अंदर एक div के लिए अलग दृश्य मॉडल न बनाएं।
स्रोत
2014-07-16 13:29:54
इस प्रश्न पर पहुंचने वाले लोगों के लिए, कृपया स्वीकृत उत्तर के पीछे स्क्रॉल करें। [नॉकआउट अब कई बाध्यकारी संदर्भों का समर्थन करता है] (http://stackoverflow.com/a/11572094/998328)। एक विशाल 'मास्टरVM' की कोई आवश्यकता नहीं है। –