私はかなり基本的な JS で作成された非角度ページを持っており、いくつかの Angular2 を学習して追加し、それをいくつかの新しい機能に使用することは素晴らしいアイデアだと思いました。
私の計画は、古いコードによって更新されるオブジェクトに Angular2 コンポーネントをバインドし、Angular2 マジックを使用して UI のチャンクを更新することでした。
問題は、外部 JS で行われた変更に対応するように Angular2 を説得できないことです。それを行うためのトリックは何ですか?問題をグーグルで検索しようとすると、Angular2 の変更検出プロセスの詳細な説明につながりますが、これまでのところ役に立ちませんでした。これはただのひどい考えですか?
ランダムな Angular2 jsfiddle を見つけ、それをハッキングして問題を示しました。文字列は「window.names」に追加されますが、角度側から追加されるまで表示されません: https://jsfiddle.net/byfo3jg3/。コードは次のとおりです。
var names = ['Joe'];
setTimeout(function() {
names.push("Frank");
}, 1000);
setTimeout(function() {
names.push("Sterve");
}, 2000);
setTimeout(function() {
names.push("Garfield");
}, 3000);
(function() {
var HelloApp,
ListThing;
ListThing = ng
.Component({
selector: 'list-thing',
template: '<ul><li *ng-for="#name of names">{{name}}</li></ul>',
directives: [ng.NgFor]
})
.Class({
constructor: function() {
this.names = window.names;
setTimeout(function() {
this.names.push("Oh hai");
}.bind(this), 10000);
}
});
HelloApp = ng
.Component({
selector: 'hello-app',
template: '<list-thing></list-thing>',
directives: [ListThing]
})
.Class({
constructor: function() {}
});
document.addEventListener('DOMContentLoaded', function() {
ng.bootstrap(HelloApp);
});
}());