Javascript AngularJS中的模型绑定不同步

Javascript AngularJS中的模型绑定不同步,javascript,angularjs,Javascript,Angularjs,我有一个AngularJS应用程序,我正在重写它,以便与工厂一起使用。我遇到的一个问题是延迟的ng模型,它第一次正确更新,但在后续API调用后更新时会失去同步 我做了一些挖掘,发现这是如何解决这个延迟,但没有用。为了避免无休止的if-else块,我用字符串为模型编制了索引: var _brands = { 'brand1': [{ rank: '1' }, { rank: '2' }, { rank: '3' }], 'brand2': [{ rank: '1'

我有一个AngularJS应用程序,我正在重写它,以便与
工厂一起使用。我遇到的一个问题是延迟的ng模型,它第一次正确更新,但在后续API调用后更新时会失去同步

我做了一些挖掘,发现这是如何解决这个延迟,但没有用。为了避免无休止的if-else块,我用字符串为模型编制了索引:

var _brands = {
        'brand1': [{ rank: '1' }, { rank: '2' }, { rank: '3' }],
        'brand2': [{ rank: '1' }, { rank: '2' }, { rank: '3' }],
        'brand3': [{ rank: '1' }, { rank: '2' }, { rank: '3' }],
        // ~10 more
    };
在默认状态下,模型更新良好。如果模型中已经填充了数据,问题就会出现

假设我有:

var _brands = {
            'brand1': [{ID: '234', location: 'Vermont', isStarred: false, rank: '1' }, { rank: '2' }, { rank: '3' }],
            'brand2': [{ rank: '1' }, { rank: '2' }, { rank: '3' }],
            'brand3': [{ rank: '1' }, { rank: '2' }, { rank: '3' }],
            // ~10 more
        };
更新客户端的值后,API调用返回的数据为:

var _brands = {
            'brand1': [{ rank: '1' }, {ID:'956', location:'Hawaii', isStarred: true, rank: '2' }, { rank: '3' }],
            'brand2': [{ rank: '1' }, { rank: '2' }, { rank: '3' }],
            'brand3': [{ rank: '1' }, { rank: '2' }, { rank: '3' }],
            // ~10 more
        };
第一个API调用会正确更新模型,但任何后续请求都会延迟一次。到底发生了什么事?有人能解释一下这个过程吗

工厂:

var _saveSelection = function (data) {
        api.post('Distributor/UpdateSelection', data).then(function () {
            api.get('Distributor/GetSelections').then(function (brands) {
                angular.copy(_initial, _brands); //This is done to 'reset' the model.
                for (var i = 0; i < brands.length; i++) {
                    _brands[brands[i].brand][brands[i].rank - 1] = brands[i];
                }
                deffered1.resolve(_brands);
            });
        });
        return deffered1.promise;
    };
    var _getSelections = function () {
        api.get('Distributor/GetSelections').then(function (brands) {
            angular.copy(_initial, _brands); //again, I want to reset the model
            for (var i = 0; i < brands.length; i++) {
                _brands[brands[i].brand][brands[i].rank - 1] = brands[i]; 
            }
            deffered2.resolve(_brands);
        });
        return deffered2.promise;
    };
    return {
        saveSelection: function (data) {
            return _saveSelection(data);
        },
        getSelections: function () {
            return _getSelections();
        }
    };
var\u saveSelection=函数(数据){
api.post('Distributor/UpdateSelection',data.),然后(函数(){
api.get('Distributor/GetSelections')。然后(函数(品牌){
angular.copy(_initial,_brands);//这样做是为了“重置”模型。
对于(变量i=0;i
问题是我在控制器中将对象复制到自身:

 brandsService.saveSelection(data).then(
                    function (brand) {
                        angular.copy(brand, $scope.brand); //Here
                        $scope.closeDistributorSelection();
                    },
                    function () {
                        //handle error
                    });
我不知道工厂已经写信给我了。抱歉

固定代码:

 brandsService.saveSelection(data).then(
                        function (brand) {
                               $scope.closeDistributorSelection();
                        },
                        function () {
                            //handle error
                        });