我有一个角度工厂,它是一个复杂的对象,看起来像这样:
app.factory("mainFcty", function(){
return {
a:"",
b:"",
c:""
}
});
当用户从应用程序继续该过程时,他们会填写上述表格。例如,说他们正在预订。
他们结束了流程,将其添加到购物车,然后再次开始填写
mainFcty
的过程。问题是当他们将
mainFcty
添加到购物车时,这是一个数组,我需要将mainFcty
重设回其原始状态,即a
,b
和c
均为空字符串。由于某种原因,一旦我再次开始该过程,应用程序会将其重置为原始状态,但是在该过程中的某个地方,与旧
mainFcty
的绑定会重新出现并覆盖我第二次收集的所有数据。在继续该过程之前,有人对如何重设绑定并删除旧的所有痕迹有任何扎实的想法?
非常感谢您的帮助!
最佳答案
创建一个默认值对象,然后使用一种方法将这些值复制到可返回的工厂对象中,以使用默认值覆盖当前值。
例如:https://jsfiddle.net/xmtkg5tz/1/
var app = angular.module('myApp',[])
.factory("mainFcty", [function() {
var current_data = {};
var default_values = {
a:"",
b:"I am a default that is not-empty",
c:"",
resetData: function() {
console.log( 'Resetting')
return current_data = angular.extend( current_data, default_values );
}
};
default_values.resetData();
return current_data;
}])
.controller('exampleCtrl',['$scope', 'mainFcty', function($scope,mainFcty) {
$scope.fcty = mainFcty;
$scope.submit = function() {
console.log( 'reset?', $scope.fcty.a, $scope.fcty.b, $scope.fcty.c );
console.log( 'Before:', mainFcty );
mainFcty.resetData();
console.log( 'After:', mainFcty );
};
}]);