所以这是一个简单的对象..
angular.module('POSapp')
.factory('RequestedPayment', function() {
return {
btcValue: 0,
timeGenerated: 0,
paid: false,
destAddress: '',
idrAmount: '',
usdAmount: ''
};
});
我将上面的工厂对象注入各种控制器。 e.g。
angular.module('POSapp')
.controller('InvoiceController', function($scope, $location, $timeout, RequestedPayment, CurrencyConvert) {
$scope.reqPayment = RequestedPayment;
对于某些情况,我需要将工厂对象重置为初始默认值。最干净的方法是什么?
也许重构工厂所以我可以做类似
的事情$scope.reqPayment = RequestedPayment.reset();
任何最佳做法? 感谢。
答案 0 :(得分:3)
由于您使用的是单个数据实例本身,为什么不使用实际返回单例的.service()
。创建一个将被实例化为角度服务的函数,该函数具有重置对象当前值的reset()
方法。
<强> DEMO 强>
(function() {
// original data
var originalData = {
btcValue: 0,
timeGenerated: 0,
paid: false,
destAddress: '',
idrAmount: '',
usdAmount: ''
};
function RequestedPayment() {
// calls the reset function defined below
this.reset();
}
RequestedPayment.prototype.reset = function() {
// angular extend deep copies enumerable properties of the `originalData` object
// to the properties that RequestPayment has, overwriting any values that exist
// within the `originalData` object.
angular.extend(this, originalData);
};
angular.module('POSapp', [])
.service('RequestedPayment', RequestedPayment)
.run(function(RequestedPayment) {
console.log(RequestedPayment.btcValue);
RequestedPayment.btcValue = 100;
console.log(RequestedPayment.btcValue);
RequestedPayment.reset();
console.log(RequestedPayment.btcValue);
});
})();