将角度对象函数调用传播到内部对象

propagate angular object function call to an internal object

本文关键字:传播 内部对象 函数调用 对象      更新时间:2023-09-26

是否有一些优雅的方法可以将角度对象函数调用传播到同一函数,但在内部对象上?

这就是我现在拥有的

var grid = $('#' + config.selector).w2grid(gridConfig);
angular.merge(this, {
   addData: addData,
   lock: lock,
   unlock: unlock,
   reload: reload,
   clear: clear,
   removeRow: removeRow,
   getRecord: getRecord,
   setRecord: setRecord,
   refreshRow: refreshRow,
   destroy: destroy,
   resize: resize,
   setData: setData,
   selectNone: selectNone,
   getSelection: getSelection
});

....
    function addData(data) {
        grid.add(data);
    }
    function lock(message) {
        grid.lock(message || '', true);
    }
    function unlock() {
        grid.unlock();
    }
    function reload() {
        grid.reload();
    }
    function clear() {
        grid.clear();
    }

我只想覆盖网格函数

var grid = $('#' + config.selector).w2grid(gridConfig);

    ....
        function addData(data) {
            alert('add data overide');
        }
    ....

因此,当调用angularObject.reload()函数时,它将调用grid.reload()如果调用angularObject.addData(),它将调用 Angular 对象中的覆盖函数addData()

箱即用的传播是我从JavaScript中错过的一件事情,但你可以手动完成

    function InnerClass() {
         this.method = function() {
         }
    }
function OuterClass() {
    var decoratedClass = new InnerClass()
    this.method = decoratedClass.method.bind(decoratedClass)
}

var instance = new OuterClass
instance.method()