Monday, 30 September 2013

create a JavaScript object dinamic

create a JavaScript object dinamic

I want to create a calendar using AngularJS, and my model is an object
like this:
$scope.model = {
weeks: [
{
days: [
null,
{
name: "3 dec",
toDoItems: [{ name: "Task 1" }, { name: "Task 2"}]
},
{
name: "4 dec",
toDoItems: [{name: "Task 1"}, {name: "Task 2"}]
}
]
},
{
days: [
null,
{
name: "5 dec",
toDoItems: [{ name: "Task 1" }, { name: "Task 2"}]
},
{
name: "6 dec",
toDoItems: [{name: "Task 1"}, {name: "Task 2"}]
}
]
}
]
}
But I want to create the object dinamicaly. I've tried something like
this, but it gives me the following error: TypeError: Cannot call method
'push' of undefined.
$scope.fillMonth = function () {
var gap = dayInWeek($scope.year.value, $scope.month, 1),
nrOfDays = daysInMonth($scope.year.value, $scope.month);
$scope.model = {};
for (var i = 0; i < (nrOfDays + gap) % 7; i++) {
for (var j = 0; j < 7; j++) {
if (j === 0)
$scope.model.weeks.push([]);
if (i === 0 && j < gap)
$scope.model.weeks[i].days.push(null);
else
$scope.model.weeks[i].days.push([{ name: i + ' ' + j,
toDoItems: [{ name: "Task 1" }, { name: "Task 2"}]}]);
}
}
}
function daysInMonth(year, month) {
var d = new Date(year, month, 0);
return d.getDate();
}
function dayInWeek(year, month, day) {
var d = new Date(year, month, day);
return d.getDay();
}
Can anyone help me with this?

No comments:

Post a Comment