के साथ सिग्नलर को प्रत्यारोपित करने का प्रयास कर रहा है मेरे पास निम्न कोड है और ऐसा लगता है कि यह क्लाइंट को कॉल नहीं कर रहा है और जानकारी के साथ नॉकऑटजेएस व्यूमोडेल को अपडेट नहीं कर रहा है। GetOuting() को पेज लोड पर कॉल किया जाता है और सही जानकारी को व्यूमोडेल में खिलाया जाता है। क्रोम डेवलपर टूल में कोई जेएस त्रुटियां नहीं दिखाता है। उस बिंदु से आगे मुझे परेशानी हो रही है कि यह समस्या निवारण कैसे करें। किसी भी मदद की सराहना की है। SignalR हबनॉकआउट व्यूमोडेल
public class Outings : Hub
{
private static Dictionary<Guid, OutingViewModel> outings = new Dictionary<Guid, OutingViewModel>();
public void GetOuting(string id)
{
var guidID = new Guid(id);
bool containsOuting = outings.ContainsKey(guidID);
if (!containsOuting)
{
var outingAccessor = new OutingAccessor();
outingAccessor.ID = guidID;
outingAccessor.Load();
var outingVM = new OutingViewModel(outingAccessor);
outings.Add(guidID, outingVM);
}
var outing = outings[guidID];
this.Clients.updateOuting(outing);
}
public void SaveOuting(string outingNumber, OutingViewModel outing)
{
var guidID = new Guid(outingNumber);
outings[guidID] = outing;
this.Clients.updateOuting(outing);
}
}
ViewModel
public class OutingViewModel
{
public OutingViewModel(OutingAccessor outingAccessor)
{
ID = outingAccessor.ID;
OutingNumber = outingAccessor.OutingNumber;
var outingGeneralAccessor = new OutingGeneralAccessor();
var outingGeneral = outingGeneralAccessor.GetOutingGeneralByOutingID(outingAccessor.ID);
this.OutingName = outingGeneral.Name;
}
public Guid ID { get; set; }
public int OutingNumber { get; set; }
public string OutingName { get; set; }
}
HTML + जावास्क्रिप्ट
@model string
<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"> </script>
<script src="@this.Url.Content("~/Scripts/jquery.signalR.js")" type="text/javascript"> </script>
<script src="@this.Url.Content("~/Scripts/knockout.js")" type="text/javascript"> </script>
<script type="text/javascript" src="/signalr/hubs"> </script>
<script type="text/javascript">
$(function() {
function outingDataViewModel() {
this.hub = $.connection.outings;
this.ID = ko.observable();
this.OutingNumber = ko.observable();
this.OutingName = ko.observable();
//Initializes the view model
this.init = function() {
this.hub.getOuting('@this.Model');
};
this.hub.updateOuting = function(data) {
ID(data.ID);
OutingName(data.OutingName);
OutingNumber(data.OutingNumber);
};
}
var vm = new outingDataViewModel();
ko.applyBindings(vm);
// Start the connection
$.connection.hub.start(function() { vm.init(); });
});
</script>
<h1>Outing Number</h1>
<div id="OutingSummary">
<div data-bind="text:OutingNumber"></div>
<div data-bind="text:OutingName"></div>
</div>
आगे डिबगिंग करने पर यह लाइनों में प्रतीत होता है
ID(data.ID);
OutingName(data.OutingName);
OutingNumber(data.OutingNumber);
लू
यह केएस की तरह जब मुझे आईडी सेट करने का प्रयास होता है तो मुझे "undefined_method" का अपवाद मिल रहा है। क्या यह किसी और के लिए समझ में आता है?
क्या आपको नॉकआउट से पहले jQuery संदर्भित करने की आवश्यकता नहीं है? –
यदि आप नॉकआउटजेएस के साथ जेक्यूरी टेम्पलेट्स का उपयोग कर रहे हैं, तो आपको केवल jQuery की आवश्यकता है, अन्यथा नॉकआउटजेएस की कोई निर्भरता नहीं है। –
अच्छी पकड़, लेकिन यह वास्तव में आंशिक दृश्य है और मास्टर व्यू में jquery संदर्भ है। मैंने कोड स्निपेट में jquery संदर्भ जोड़ा ताकि किसी भी झूठी सकारात्मक उत्तरदाताओं को न उठाएं ... उस विचार के लिए बहुत कुछ। मैं जल्द ही उदाहरण ठीक कर दूंगा। – PlTaylor