Ok I have the folowwing:
function getRate(source, $scope, e) {
var dateValue = $("Date", source).text() || "";
if (!dateValue) {
return null;
}
var dailyPrice = $("DailyPrice", source).text() || "";
var weeklyPrice = $("WeeklyPrice", source).text() || "";
var monthlyPrice = $("MonthlyPrice", source).text() || "";
var isAvailable = $("IsAvailable", source).text() === "1";
var minimumStay = Number($("MinimumStay", source).text());
console.log(dailyPrice, weeklyPrice, monthlyPrice, isAvailable, minimumStay, dateValue);
if (isNaN(minimumStay)) {
minimumStay = DEFAULT_MINIMUM_STAY;
}
return {
date: new Date(dateValue),
dailyPrice: dailyPrice,
weeklyPrice: weeklyPrice,
monthlyPrice: monthlyPrice,
reserved: !isAvailable,
minimumStay: minimumStay
};
}
which is declared declared inside of a function like so:
function bookingmainfunction() {
//***************************************
// Constants
//***************************************
var MILLISECONDS_PER_DAY = 86400000;
var DEFAULT_MINIMUM_STAY = 1;
//***************************************
// Variables
//***************************************
var rangeMinDate = null;
var rangeMaxDate = null;
var checkInDate = null;
var checkOutDate = null;
var rates = {};
var cache = {
checkOutRanges: {},
checkInAvailability: {}
};
//***************************************
// Parsing
//***************************************
function parseXml(xml) {
rates = getRates(xml);
}
function getRates(xml) {
var result = {};
var rate;
$("AvailabilityRates DateData", xml).each(function() {
rate = getRate($(this));
if (!rate || !angular.isDate(rate.date)) {
return;
}
result[dateToHashKey(rate.date)] = rate;
updateDateRangeBoundaries(rate.date);
});
return result;
}
function getRate(source, $scope, e) {
var dateValue = $("Date", source).text() || "";
if (!dateValue) {
return null;
}
var dailyPrice = $("DailyPrice", source).text() || "";
var weeklyPrice = $("WeeklyPrice", source).text() || "";
var monthlyPrice = $("MonthlyPrice", source).text() || "";
var isAvailable = $("IsAvailable", source).text() === "1";
var minimumStay = Number($("MinimumStay", source).text());
console.log(dailyPrice, weeklyPrice, monthlyPrice, isAvailable, minimumStay, dateValue);
if (isNaN(minimumStay)) {
minimumStay = DEFAULT_MINIMUM_STAY;
}
return {
date: new Date(dateValue),
dailyPrice: dailyPrice,
weeklyPrice: weeklyPrice,
monthlyPrice: monthlyPrice,
reserved: !isAvailable,
minimumStay: minimumStay
};
}
}
Which is turn is declared inside of
.service("Booking", [/*ABOVE STATED FUNCTION GOES HERE*/])
this is then hooked onto the following angularJS module like so:
angular.module("app", ["dateSheet"])
.service("Booking", [
/*ABOVE STATED FUNCTION GOES HERE*/
])
.controller("AppCtrl", [
"$scope",
"$attrs",
"AppDataLoader",
"Booking",
function(scope, attributes, AppDataLoader, Booking) {
var VIEW_STATE_LOADING = "loading";
var VIEW_STATE_ERROR = "error";
var VIEW_STATE_READY = "ready";
var VIEW_SUB_STATE_RATES = "rates";
var VIEW_SUB_STATE_MONTHS = "months";
alert("Booking");
scope.year = 2013;
scope.month = 7;
scope.months = months[date.getMonth()];
scope.monthdisplay = 3;
scope.currntday = date.getDate();
}]);
Now when i try to add scope.returnbookingdate = Booking.getRate();
into my module like so:
scope.monthdisplay = 3;
scope.currntday = date.getDate();
scope.returnbookingdate = Booking.getRate();
}]);
it returns TypeError: Object # has no method 'getRate' WHY????? how do i get those nested functions and there variables back out of the service and into the module.. basically i'm trying to append the relevant XML data to the dom. but its winning!
kind regards Chris