Load JSON file into model using Javascript / jQuery (deferred, asynchronous)
Storing deferred in the model and then passing a callback to getData is a bit obscure. You could write it like this instead:

getData: function() {
    var deferred = $.Deferred();

    if(!this.data) {
        $.getJSON('...',).done(function (data) {
            this.data = data;
            deferred.resolve(data);
        }.bind(this)).fail(deferred.reject);
    } else {
        deferred.resolve(this.data);
    }

    return deferred.promise();
}

model.getData().done(function (data) { /* ... */});

Use either $ or jQuery, don't mix them.
Use Function.prototype.bind instead of var self = this.
Use semicolons after each statement (or leave them out entirely if you prefer that).
this.data = null; seems pointless, newly created objects don't have such a property.