Работа с моментом datepicker в моем проекте, я не вижу, где моя ошибка. В основном, что я хочу сделать, это заставить подозревать свойство source, чтобы узнать, когда изменится свойство th (время загрузки на сервисный метод). Так follwoing некоторые URLs я был в состоянии построить этот базовый пример:момент datapicker: приписывание KO собственности
var model = {
test_date: ko.observable(new Date('2012/12/12'))
};
ko.applyBindings(model, $("#target")[0]);
model.test_date.subscribe(function (newValue) {
alert("new selection :" + newValue);
});
http://jsfiddle.net/rolandomartinezg/x7Zt3/5/
Код выше прост и работает, моя беда начать в моем рабочем коде, где по какой-то странной причине код realted в suscription не запускается. короткий пример (в производстве кода я машинопись):
export var fromDate = ko.observable(new Date('2012/12/12'));
fromDate.subscribe(function (newValue) {
alert("new selection of date");
});
Я пытался найти отсутствующую ссылку из моего jsfiddle примера и мой производственный код и оба используют одни и те же библиотеки (moment.js, момент-datepicker.js , момент-DatePicker-ko.js,/knockout.js то, что я делаю неправильно любого кончик
UPDATE 1:.? Мой код продукции преобразуется из машинописи в ЯША:
define(["require", "exports", 'services/logger', '../../services/Assessment/datacontext'], function(require, exports, __logger__, __datacontext__) {
var logger = __logger__;
var datacontext = __datacontext__;
exports.title = 'AssessmentListing';
exports.fromDate = ko.observable(new Date('2012/12/12'));
exports.toDate = ko.observable(new Date('2012/12/12'));
function activate() {
loadInitData();
}
exports.activate = activate;
function loadInitData() {
var focusDate = ko.observable(new Date('2013/07/06'));
exports.fromDate = ko.observable(firstDayOfMonth(focusDate));
exports.toDate = ko.observable(getLastDayOfMonth(focusDate));
// calls to services
}
function getLastDayOfMonth(focusDate) {
var d = new Date(Date.apply(null, focusDate));
d.setMonth(d.getMonth() + 1);
d.setDate(0);
return d;
}
function firstDayOfMonth(focusDate) {
var d = new Date(Date.apply(null, arguments));
d.setDate(1);
return d;
}
exports.toDate.subscribe(function (newValue) {
alert("new selection :");
});
exports.fromDate.subscribe(function (newValue) {
alert("new selection");
});
function viewAttached() {
}
exports.viewAttached = viewAttached;
})
UPDATE 2: Мой ВЗГЛЯД
<div class="span4">
<span><small>From Date:</small> </span>
<div class="input-append date" id="fromDate" >
<input id="fromDatePicker" type="text" data-bind="datepicker: fromDate()" class="input-small">
<span class="add-on"><i class="icon-calendar"></i></span>
</div>
<span><small>To Date: </small></span>
<div class="input-append date" id="ToDate" >
<input id="toDatePicker" type="text" data-bind="datepicker: toDate()" class="input-small">
<span class="add-on"><i class="icon-calendar"></i></span>
</div>
</div>
Update 3 Попытка использовать ChangeDate не работает, потому что ev.date не доступен.
export function viewAttached() {
$('#fromDatePicker').datepicker()
.on('changeDate', function (ev) {
/*ev.date doesn't work*/
alert('fromdate has changed');
});
}
Да, ваш отзыв полезен. я тестировал в своем примере на скрипке, что должно быть причиной, к сожалению, после того, как я изменил свое мнение, проблема все еще существует. – Rolando
Похоже, что 'fromDate' нуждается в таком же лечении.Если это еще не устраняет проблему с производством, вы также должны указать, как ваш производственный код вызывает 'ko.applyBindings'; пока неясно, как ваш JS связан с вашим мнением. – Jacob
Мое веб-приложение основано на шаблоне hottowel (этот шаблон использует durandal.js). как я могу дать вам больше отзывов? – Rolando