I have a strange problem with creating fresh copy of JavaScript object and assigned to $scope. This object is bind to frontend form, so I must reset the data of this object. Here is the code:
This is JavaScript class:
var userInfo = (function () {
function userInfo() {}
var _refCode = "";
var _country = {};
var _language = {};
var _userType = 0;
var _retailer = {};
userInfo.prototype.data = {
refCode: function (value) {
return angular.isDefined(value)
? (_refCode = value)
: _refCode;
},
country: function (value) {
return angular.isDefined(value)
? (_country = value)
: _country;
},
language: function (value) {
return angular.isDefined(value)
? (_language = value)
: _language;
},
userType: function (value) {
return angular.isDefined(value)
? (_userType = value)
: _userType;
},
retailer: function (value) {
return angular.isDefined(value)
? (_retailer = value)
: _retailer;
}
}
return userInfo;
})();
this is my angular controller:
app.controller('MainController', function ($scope, $http, $state) {
$scope.initUserInfo = function () {
//here make instance of the class
var user_info = new userInfo();
delete $scope.userInfo;
$scope.userInfo = user_info;
};
$scope.initUserInfo();
});
But when I call the function initUserInfo() nothing happens. The data in $scope.userInfo is still there. What have I done wrong and how to delete information from userInfo?
UPDATE:
Thanks, I make changes and now my code look like, but when I
console.log
I have following error:
Cannot read property 'data' of undefined - on the first console.log
print old value - on second console.log
print old value - on third console.log
Аfter the execution of this function that was before her performance remains not erased.
$scope.initUserInfo = function () {
delete $scope.userInfo;
var user_info = null;
console.log("after delete: " + $scope.userInfo.data.refCode());//first console log
user_info = new userInfo();
$scope.userInfo = user_info;
console.log("after assing: " + $scope.userInfo.data.refCode());
$scope.userInfo.data.createdStore(new addStoreData());
$scope.userInfo.merge(verifiedEmployee);
$scope.verifiedEmployee = verifiedEmployee;
console.log($scope.userInfo.data.refCode());
};