When I run my app the model binding works. However, after calling my service post method and setting the value of this.payload to the value of response.data and calling bind, my view no longer displays any of the model data. The controller's and the service's respective message properties display but nothing from the payload object.
Is there something obvious with scoping that I am missing?
app.js
"use strict";
var payrollPredictApp = angular.module('payrollPredictApp', []);
PayrollPredictController.js
"use strict";
payrollPredictApp.controller('PayrollPredictController', ['AppModel', function (AppModel) {
var self = this;
self.message = "test message.";
self.model = AppModel;
}]);
PayrollPredictService.js
"use strict";
payrollPredictApp.service('AppModel', function ($http) {
var service = this;
service.payload = {
"Settings": {
"employeeBenefitCost": 1000,
"dependentBenefitCost": 500,
"payPerPeriod": 2000,
"numberOfPayPeriods": 26
},
"Employee": {
"FirstName": "",
"LastName": "",
"Dependents": []
}
};
service.message = "service message.";
service.addDependent = function () {
service.payload.Employee.Dependents.push({ "FirstName": '', "LastName": '' });
};
service.makePrediction = function () {
$http.post('http://localhost:59045/api/payrollpredict/executeprediction', service.payload)
.then(
function (response) {
service.payload = response.data;
}.bind(service),
function (response) {
console.log('Error occurred.');
}
);
};
});
Part of View
<body ng-controller="PayrollPredictController as payrollPredict">
<div>
<h1>Payroll Predict</h1>
</div>
<div>
<p>{{ payrollPredict.message }}</p>
<p>{{ payrollPredict.model.message }}</p>
<p>{{ payrollPredict.model.payload.Employee.FirstName }}</p>
<p>{{ payrollPredict.model.payload.Employee.LastName }}</p>
</div>