我希望在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);
控制台记录它很好,但是 - 当构造函数在开始时运行时 - 视图为空。我该怎么办?
答案 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
。
我认为第一个例子更好(更干净),但两者都有效。