其中,有两个日期选择器和一个表我创建一个列表页面。 页面的想法是使用默认参数为datepickers一些注册数据加载页面后,用户将能够选择他想根据日期选择过滤器,看看有什么。 要运行我的应用程序,我创建了两个属性没有fromdate和todate和我使用,以便suscribe方法,知道什么时候该日期更改,这样,当日期更改我应该叫我的服务(或者一些过滤代码)。 我与我的网页的问题是,在目前加载我的网页控制默认情况下,从我自己的逻辑seted,让自己的代码,应该叫我的服务被称为两次(一个在loadInitData等人在suscriptions)
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(firstDayOfMonth(focusDate));
exports.toDate(getLastDayOfMonth(focusDate));
// calls to services
}
exports.toDate.subscribe(function (newValue) {
/*THIS CODE SHOULD BE EXECUTED JUST WHEN THE USER CHANGE THE DATE FROM THE CONTROL*/
alert("new selection :");
});
exports.fromDate.subscribe(function (newValue) {
/*THIS CODE SHOULD BE EXECUTED JUST WHEN THE USER CHANGE THE DATE FROM THE CONTROL*/
alert("new selection");
});
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;
}
function viewAttached() {
}
exports.viewAttached = viewAttached;
})
尝试添加一个新的布尔属性,说在loadInitData的开头加载(真)和装载(假)和loadInitData结束。 这项工作的罚款。 但仍suscription代码被称为一个以上的时间。