gpt4 book ai didi

javascript - 如何为工厂对象设置重置功能?

转载 作者:行者123 更新时间:2023-11-30 12:35:09 29 4
gpt4 key购买 nike

所以这是一个简单的对象..

angular.module('POSapp')
.factory('RequestedPayment', function() {

return {
btcValue: 0,
timeGenerated: 0,
paid: false,
destAddress: '',
idrAmount: '',
usdAmount: ''
};
});

我将上面的工厂对象注入(inject)到各种 Controller 中。例如

angular.module('POSapp')
.controller('InvoiceController', function($scope, $location, $timeout, RequestedPayment, CurrencyConvert) {

$scope.reqPayment = RequestedPayment;

在某些情况下,我需要将工厂对象重置为初始默认值。最干净的方法是什么?

也许重构工厂,这样我就可以做类似的事情

$scope.reqPayment = RequestedPayment.reset();

有什么最佳做法吗?谢谢。

最佳答案

既然您使用的是数据本身的单个实例,那么为什么不使用实际上返回单例的 .service()。创建一个将实例化为 Angular 服务的函数,该服务具有重置对象当前值的 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);
});

})();

关于javascript - 如何为工厂对象设置重置功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26292697/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com