如何从构造函数刷新和对象

时间:2016-03-14 12:56:11

标签: angularjs

我希望在constructor更改时刷新存储在 <dummy> <div ng-repeat="key in $ctrl.data">{{ key }}</div> </dummy> 中的数据对象。我怎样才能做到这一点?目前,我有这个:

HTML

class Dummy {
    constructor() {
        this.data = [];

        this.runData();
    }

    runData() {
        const inter = setInterval(() => {
            this.data.push('item');
            console.log(this.data);
        }, 1000);

        setTimeout(() => {
            clearInterval(inter);
        }, 5000);
    }
};

app.directive('dummy', () => {
    return {
        controller: Dummy,
        controllerAs: '$ctrl'
    };
});

JS(ES6):

app.directive('dummy', () => {
    return {
        controller: Dummy,
        controllerAs: '$ctrl',
        link(scope, el, a, ctrl) {
            scope.$watch(ctrl.data, function (newValue, oldValue) {
                ctrl.data = ctrl.data;
            }, true);
        }
    };
});

我也试过写一个观察者:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

控制台记录它很好,但是 - 当构造函数在开始时运行时 - 视图为空。我该怎么办?

1 个答案:

答案 0 :(得分:0)

所以我解决了这个问题。 我不知道这是否是最好的行动方案,所以如果您认为不是,请写下您自己的答案。我使用$interval这样的服务:

runData() {
    this.interval(() => {
        this.data.push(Date.now());
    }, 1000, 10);
}

以前通过DI,当然注入它。

我还没有额外的服务而进行了另一次尝试。我像这样使用了JS的setInterval()

runData() {
  setInterval(() => { this.data.push(Date.now()); this.scope.$apply; }, 1000);
}

但在这里,我必须明确地使用scope.$apply

我认为第一个例子更好(更干净),但两者都有效。