मैं एक समस्या मिल गया है जब पाठ बॉक्स के लिए दिनांक मान बाध्यकारी नॉकआउट का उपयोग कर, के रूप में बाध्यकारी Knockoutjs
जब पेज पहली बार के लिए भरी हुई है नीचे चित्र में देखा, मैं करने के लिए ajax का उपयोग कर रहा खाता स्टेटस डेटा प्राप्त करें।
public JsonResult GetAccountStatements(int id)
{
var accountStatementsVM = db.AccountStatements
.Where(a => a.CompanyID == id)
.Select(a => new AccountStatementViewModel
{
AccountStatementID = a.AccountStatementID,
CompanyID = a.CompanyID,
Description = a.Description,
Amount = a.Amount,
ReceiptDate = a.ReceiptDate,
Type = a.Type
})
.ToList();
return Json(accountStatementsVM, JsonRequestBehavior.AllowGet);
}
चींटी परिणाम है::
[{"AccountStatementID":2,"CompanyID":1,"Description":"test","Amount":1000,"ReceiptDate":"/Date(1447261200000)/","Type":"Payment"}]
देखें में, मैं इसे इस कोड का उपयोग कर प्रदर्शित:
<tbody data-bind="foreach: AccountStatements, visible: AccountStatements().length > 0">
<tr>
<td data-bind="attr: { id: AccountStatementID }">
<a href="#" class="btn btn-primary btn-xs" data-bind="click: $root.edit"><i class="glyphicon glyphicon-pencil"></i></a>
<a href="#" class="btn btn-danger btn-xs" data-bind="click: $root.delete"><i class="glyphicon glyphicon-remove"></i></a>
</td>
<td data-bind="text: Description"></td>
<td data-bind="text: Amount"></td>
<td data-bind="date: ReceiptDate"></td>
</tr>
</tbody>
function AccountStatementViewModel(companyID) {
var self = this;
...
var AccountStatement = {
AccountStatementID: self.AccountStatementID,
CompanyID: self.CompanyID,
Description: self.Description,
Amount: self.Amount,
ReceiptDate: self.ReceiptDate,
Type: self.Type
}
self.AccountStatement = ko.observable();
self.AccountStatements = ko.observableArray();
$.ajax({
url: webroot + 'AccountStatement/GetAccountStatements',
contentType: 'application/json; charset=utf-8',
data: { id: self.CompanyID },
cache: false
}).done(function (data) {
self.AccountStatements(data);
});
...
self.edit = function (accountStatement) {
$('#lnkAddAccountStatement').hide('blind', 1000);
$('#pnlAddEditAccountStatement').show('blind', 1000);
self.AccountStatement(accountStatement);
}
...
}
नियंत्रक json में परिणाम देता है
दिनांक को प्रारूपित करने के लिए कोड यहां दिया गया है:
ko.bindingHandlers.date = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var valueUnwrapped = ko.utils.unwrapObservable(valueAccessor());
var textContent = moment(valueUnwrapped).format("DD/MM/YYYY");
ko.bindingHandlers.text.update(element, function() { return textContent; });
}
};
इस चरण में, दिनांक सही स्वरूप में प्रदर्शित किया जाता है, तो अगर मैं संपादित करें बटन क्लिक किया, पाठ बॉक्स में ReceiptDate स्वरूपित नहीं है। ReceiptDate टेक्स्ट बॉक्स की अधिकतम
कोड:
<input type="text" placeholder="Enter Receipt Date" class="form-control fdatepicker" readonly="readonly" data-bind="value: AccountStatement().ReceiptDate" />
अगर मैं data-bind="date: AccountStatement().ReceiptDate"
को बदलने के टेक्स्ट बॉक्स खाली हो जाएगा।
टेक्स्टबॉक्स में दिनांक को कैसे प्रारूपित करें?
अद्यतन
मैं इस link में के रूप में की तारीख बाध्यकारी हैंडलर बदल दिया है लेकिन ReceiptDate के पाठ बॉक्स मूल्य अब भी है ध्यान में रखते हुए /Date(1447261200000)/
परिवर्तन:
<input type="text" placeholder="Enter Receipt Date" class="form-control fdatepicker" readonly="readonly" data-bind="date: AccountStatement().ReceiptDate" />
और की तारीख तालिका में रसीद खाली हो गई है:
<td data-bind="date: ReceiptDate"></td>
कुछ इस तरह http://jsfiddle.net/LkqTU/27696 /। चीयर्स –
@supercool लिंक के लिए धन्यवाद लेकिन यह काम नहीं करता है। उपर्युक्त लिंक में, आपने सामान्य दिनांक प्रारूप (डीडी/मिमी/yyyy) का उपयोग किया है, जबकि मेरे मामले में, दिनांक मूल्य जेसन दिनांक प्रारूप '/ दिनांक (1447261200000) /' में है। मैंने अधिक जानकारी प्रदान करने के लिए अपना प्रश्न संपादित किया है। – Willy
'self.ReceiptDate = ko.observable (1447261200000) सेट करने का प्रयास करें;' और इसे जांचें, फिर भी यह काम करेगा। पल आपके द्वारा निर्दिष्ट तिथि और प्रारूप को डीकोड करेगा। –