【发布时间】:2017-05-23 18:41:39
【问题描述】:
我在创建 JavaScript 对象的新副本并分配给 $scope 时遇到了一个奇怪的问题。这个对象绑定到前端表单,所以我必须重置这个对象的数据。这是代码:
这是 JavaScript 类:
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;
})();
这是我的角度控制器:
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();
});
但是当我调用函数initUserInfo() 时,什么也没有发生。 $scope.userInfo 中的数据还在。我做错了什么以及如何从userInfo 中删除信息?
更新:
谢谢,我进行了更改,现在我的代码看起来像,但是当我
控制台日志
我有以下错误:
无法读取未定义的属性“数据” - 在第一个 console.log 上
打印旧值 - 在第二个 console.log 上
打印旧值 - 在第三个 console.log 上
-在执行此功能后,在她的表演之前仍然没有被删除。
$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());
};
【问题讨论】:
-
为什么不像 $scope.userInfo= {} ??
-
@ManuelObregozo 并尝试过,但没有成功
标签: javascript angularjs