मैंने "schmidlop" बाध्यकारी को इनपुट में परिवर्तन (लेट लम्बा इनपुट) और मार्कर के केंद्र में हमेशा मार्कर रीसेट करने के लिए बाध्यकारी में संशोधन किया है।
एचटीएमएल
<input data-bind="value: mapOne().lat" />
<input data-bind="value: mapOne().lng" />
बाध्यकारी, कुछ js फ़ाइल में इस को शामिल करें और html में यह शामिल है।
ko.bindingHandlers.map = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
$("#" + element.getAttribute("id")).data("mapObj","");
mapObj = ko.utils.unwrapObservable(valueAccessor());
var latLng = new google.maps.LatLng(
ko.utils.unwrapObservable(mapObj.lat),
ko.utils.unwrapObservable(mapObj.lng));
var mapOptions = { center: latLng,
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP};
mapObj.googleMap = new google.maps.Map(element, mapOptions);
mapObj.marker = new google.maps.Marker({
map: mapObj.googleMap,
position: latLng,
draggable: true
});
mapObj.onChangedCoord = function(newValue) {
var latLng = new google.maps.LatLng(
ko.utils.unwrapObservable(mapObj.lat),
ko.utils.unwrapObservable(mapObj.lng));
mapObj.googleMap.setCenter(latLng);
mapObj.marker.setPosition(latLng);
};
mapObj.onMarkerMoved = function(dragEnd) {
var latLng = mapObj.marker.getPosition();
mapObj.lat(latLng.lat());
mapObj.lng(latLng.lng());
};
mapObj.lat.subscribe(mapObj.onChangedCoord);
mapObj.lng.subscribe(mapObj.onChangedCoord);
google.maps.event.addListener(mapObj.marker, 'dragend', mapObj.onMarkerMoved);
$("#" + element.getAttribute("id")).data("mapObj",mapObj);
}
};
देखें मॉडल
self.mapOne = ko.observable();
self.mapOne({'lat':ko.observable(87.22),'lng':ko.observable(27.22)});
स्रोत
2017-04-21 11:11:12
तुम क्यों आप तत्व की आईडी नहीं मिल सकता है के बारे में और अधिक विशिष्ट हो सकता है? क्या दूसरा दृश्य एक मोडल/संवाद है? –
दूसरा दृश्य एक मॉडल है। और पीएस- मैं knockout.js का उपयोग कर रहा हूँ। आईडी तक पहुंचने के लिए, मैं jquery वाक्यविन्यास $ ('# mapId') [0] वाक्यविन्यास का उपयोग कर रहा हूं, यह शून्य या अपरिभाषित लौटाता है। जब मैं आईडी के लिए बाध्यकारी एट्रिब्यूट का उपयोग करता हूं, तो मान आईडी को सौंपा जाता है, लेकिन यह एक div तत्व (जो नक्शा ऑब्जेक्ट के लिए आवश्यक है) का प्रतिनिधित्व नहीं करता है, लेकिन केवल एक स्ट्रिंग जो आईडी मान के बराबर है। – Empty
क्या आप jsfiddle पर या अपने प्रश्न में कुछ कोड पोस्ट कर सकते हैं? मैं सोच रहा हूं कि क्या आप Google मानचित्र ऑब्जेक्ट को प्रारंभ कर रहे हैं * पहले * नॉकआउट में आपके तत्व को आईडी को बांधने का मौका है। –