Thanks, Paul. I was up late last night. I forgot to reply to add the answer. I got an answer from Rob Eisenberg, the creator of Durandal. My mistake was that I needed to return the promise from the .getJSON() call. I also needed to add another function, viewAttached(), to the module for all of my jQuery calls that refer to an element in the DOM.
Here is Rob's reply to Help with observableArray not updating in view. They are really helpful in this group. Rob is pretty quick to answer most questions.
Below is the corrected code for the viewmodel:
define(function(require){
// Load System for debugging
var system = require('durandal/system');
// Customer Structure
function Customer(data) {
this.name = ko.observable(data.name);
this.dob = ko.observable(data.dob.substring(5,7) + '/'
+ data.dob.substring(8,10) + '/' + data.dob.substring(0,4));
this.phone = ko.observable(data.phone);
this.email = ko.observable(data.email);
};
// Form observables
var inputName = ko.observable('');
var inputDOB = ko.observable('');
var inputPhone = ko.observable('');
var inputEmail = ko.observable('');
// Customers array
var customers = ko.observableArray([]);
return {
inputName: inputName,
inputDOB: inputDOB,
inputPhone: inputPhone,
inputEmail: inputEmail,
customers: customers,
// This allows us to add jQuery as usual
viewAttached: function() {
// Change the selected nav item
$('.customerNav').addClass('active');
$('.firstNav').removeClass('active');
$('.secondNav').removeClass('active');
$('.date').datepicker();
},
// This performs any needed functionality after the page loads
activate: function(data) {
// Capture the module instance
var self = this;
// Get current customers from database and add to customers observableArray
var promise = $.getJSON(
// Backend script
'php/query.php',
// Variables sent to query.php
{
mode: 'select',
table: 'customers',
'fields[]': '*',
'values[]': '*'
},
// Callback function
function(data) {
var customer = $.map(data, function(item) {return new Customer(item) });
system.log(customers);
self.customers(customer);
}
);
return promise;
}
};
}); // define