评论一个功能代码工作,否则失败

时间:2014-10-03 09:10:40

标签: javascript extjs extjs4 rally

在我的应用程序中,当我尝试复制一个对象时,它会被复制但是如果我正在定义另一个函数调用,那么正确执行的代码会出错,不知道为什么。任何有关这方面的帮助都非常感谢,并提前感谢

如果我评论此功能that._createCustomStore(data);一切正常,如果我取消注释,则会在此行Uncaught ReferenceError: _newParent is not defined <{p}}上给出错误copiedParent = _newParent;

下面是我的代码

            _genericInnerCopy: function(_childObj) {
                copiedParent = {};
                that = this;
                model = that.model;
                var record = Ext.create(model, {
                    Name: _childObj.get('Name'),
                    //Parent: _newParent.get("_ref");,
                });
                record.save({
                    callback: function(result, operation) {
                        if(operation.wasSuccessful()) {
                            console.log("Done");
                            //that._copyChild();
                        } else {
                            console.log("error");
                        }
                    }
                })
                that._all_pis.push(record);
                copiedParent = _newParent;
                var store = Ext.create('Rally.data.custom.Store', {
                    data: that._all_pis,
                    listeners: {
                        load: function(store,data,success) {
                            that._updateAll(store, data, copiedParent);
                        },                      
                        scope: that
                    },     
                });
                //console.log("record values", that._all_pis);
            },  
            _updateAll: function(store,data, copiedParent) {
                that = this;
                Rally.data.BulkRecordUpdater.updateRecords({
                    records: data,
                    propertiesToUpdate: {
                        Parent: copiedParent.get("_ref")
                    },
                    success: function(readOnlyRecords){
                        //all updates finished, except for given read only records
                    },
                    scope: that
                });
                that._createCustomStore(data);
            },
            _createCustomStore: function(data) {
                me = this;
                Ext.create('Rally.data.custom.Store', {
                    data: data,
                    //model: 'PortfolioItem/' + _newParent.get('PortfolioItemTypeName'),
                    autoSync:true,
                    listeners: {
                        load: function(store,data,success) {
                            console.log("store value", store);
                            console.log("data value", data);
                            console.log("success value", success);
                        },
                        scope: me                   
                    },
                });             
            },
            onqModelRetrieved: function() {
                var that = this;
                that._type = 'PortfolioItem/' + that._type,
                Rally.data.ModelFactory.getModel({
                    type: that._type,
                    success: this.onModelRetrieved,
                    scope: this
                });     
            },              
            onModelRetrieved: function(model) {
                this.model = model;
                this.createFeature();
            },
            createFeature: function() {
                var record = Ext.create(this.model, {
                    Name: "(Copy of) " + this._newObj.get('Name'),
                });
                record.save({
                    callback: function(result, operation) {
                        if(operation.wasSuccessful()) {
                            _newParent = result
                            Ext.Msg.alert('created ' + result.get('PortfolioItemTypeName') + ':', result.get('Name'));
                        }
                        else{
                            console.log("error");
                        }
                    }
                });
            }       
        });

1 个答案:

答案 0 :(得分:0)

尝试定义它并像这样使用它:

_newParent: null,
_genericInnerCopy: function(_childObj) {
    copiedParent = {};
    that = this;
    model = that.model;
    var record = Ext.create(model, {
        Name: _childObj.get('Name')
        //Parent: _newParent.get("_ref");,
    });
    record.save({
        callback: function(result, operation) {
            if(operation.wasSuccessful()) {
                console.log("Done");
                //that._copyChild();
            } else {
                console.log("error");
            }
        }
    })
    that._all_pis.push(record);
    copiedParent = that._newParent;
    var store = Ext.create('Rally.data.custom.Store', {
        data: that._all_pis,
        listeners: {
            load: function(store,data,success) {
                that._updateAll(store, data, copiedParent);
            },                      
            scope: that
        }
    });
    //console.log("record values", that._all_pis);
},  
_updateAll: function(store,data, copiedParent) {
    that = this;
    Rally.data.BulkRecordUpdater.updateRecords({
        records: data,
        propertiesToUpdate: {
            Parent: copiedParent.get("_ref")
        },
        success: function(readOnlyRecords){
            //all updates finished, except for given read only records
        },
        scope: that
    });
    that._createCustomStore(data);
},
_createCustomStore: function(data) {
    me = this;
    Ext.create('Rally.data.custom.Store', {
        data: data,
        //model: 'PortfolioItem/' + _newParent.get('PortfolioItemTypeName'),
        autoSync:true,
        listeners: {
            load: function(store,data,success) {
                console.log("store value", store);
                console.log("data value", data);
                console.log("success value", success);
            },
            scope: me                   
        }
    });             
},
onqModelRetrieved: function() {
    var that = this;
    that._type = 'PortfolioItem/' + that._type,
    Rally.data.ModelFactory.getModel({
        type: that._type,
        success: this.onModelRetrieved,
        scope: this
    });     
},              
onModelRetrieved: function(model) {
    this.model = model;
    this.createFeature();
},
createFeature: function () {
    var that = this;
    var record = Ext.create(this.model, {
        Name: "(Copy of) " + this._newObj.get('Name')
    });
    record.save({
        callback: function (result, operation) {
            if (operation.wasSuccessful()) {
                that._newParent = result
                Ext.Msg.alert('created ' + result.get('PortfolioItemTypeName') + ':', result.get('Name'));
            }
            else {
                console.log("error");
            }
        }
    });
}