我有一个角度工厂,它是一个复杂的对象,看起来像这样:

app.factory("mainFcty", function(){
    return {
        a:"",
        b:"",
        c:""
    }
});


当用户从应用程序继续该过程时,他们会填写上述表格。例如,说他们正在预订。
他们结束了流程,将其添加到购物车,然后再次开始填写mainFcty的过程。
问题是当他们将mainFcty添加到购物车时,这是一个数组,我需要将mainFcty重设回其原始状态,即abc均为空字符串。
由于某种原因,一旦我再次开始该过程,应用程序会将其重置为原始状态,但是在该过程中的某个地方,与旧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 );
    };
}]);

10-08 01:12