Can I bubble-up an event from Ajax.response?

I've been struggling with this for a day. I can't figure out how to bubble an event up from the ajax.response() (or ajax.error() handlers coming from the fetch() of my enyo/Source...

I could really use some help on understanding how to bubble-up an event to be handled by a parent kind - I am currently calling mftLbUserLoginModel.fetch(); from a parent's Button ontap event, and the Ajax is working fine, I just can't figure out how to handle UI changes based on success or failure. Here is the enyo/Source and enyo/Model I'm working with:

var kind = require('enyo/kind'),
EnyoSource = require('enyo/Source'),
Ajax = require('enyo/Ajax'),
Model = require('enyo/Model');

// MUST CHANGE FOR PRODUCTION: lbApiUrl
var mftLbApiUrl = 'http://192.168.0.136:3000/api/';
var mftLbLoginEndpoint = 'mftUsers/login';
var mftGetUserWithIdEndpoint = 'mftUsers/';

var MftLbLoginSource = kind({
name: 'mftLbLoginSource',
kind: EnyoSource,
fetch: function (rec, opts) {
// implement code to fetch records
var ajax = new Ajax({
url: mftLbApiUrl + mftLbLoginEndpoint,
method: 'POST',
cacheBust: false,
postBody: {username: rec.get('username'), password: rec.get('password')}
});

ajax.go();

ajax.response(this, function (inSender, inResponse) {
opts.success(inResponse); // call success callback to return data
// ** How to bubble a loginSuccess event from here **
// get username from API with get /mftUsers/{id}
mftLbUserModel.fetch();
});

ajax.error(this, function (inError, err) {// WIP: Needs Work...
opts.error(inError);
mftLbUserLoginModel.clearError();
mftLbUserModel.set('username', undefined); // TEMP - Looks ugly, shoudln't this send an event to be handled
});
}
});
var mftLbLoginSource = new MftLbLoginSource({name: 'mftLbLoginSource'});

var MftLbUserLoginModel = kind({
name: "mftUserLoginModel",
kind: Model,
source: 'mftLbLoginSource',
url: mftLbApiUrl + mftLbLoginEndpoint,
options: {parse: true},
parse: function (data) {
data.access_token = data.id; // Loopback access_token is returned as 'id'
return data;
}
});

var mftLbUserLoginModel = new MftLbUserLoginModel({name: "mftLbUserLoginModel"});
-Thanks in advance for any help!
Sign In or Register to comment.