スコープ内の変数を複数回監視する textAngular コードがありますか? この時計を一度だけ作成する簡単な方法はありますか、それとも存在することを検出できますか?
コードのセクションは次のとおりです。
taRegisterTool('fontColor', {
display: "<button colorpicker type='button' class='btn btn-default ng-scope' title='Font Color' colorpicker-close-on-select colorpicker-position='bottom' ng-model='fontColor' style='color: {{fontColor}}'><i class='fa fa-font '></i></button>",
action: function (deferred) {
var self = this;
self.$watch('fontColor', function (newValue) {
self.$editor().wrapSelection('foreColor', newValue);
});
self.$on('colorpicker-selected', function () {
deferred.resolve();
});
self.$on('colorpicker-closed', function () {
deferred.resolve();
});
return false;
}
});
このボタンがクリックされるたびに、このアクションが実行されます。この $watch により、複数のインスタンスが作成され、存続します。
以下の「npe」による有益なコメントに基づいて、時計が複数回作成されないようにコードを修正しました。
新しいコード:
taRegisterTool('fontColor', {
display: "<button colorpicker type='button' class='btn btn-default ng-scope' title='Font Color' colorpicker-close-on-select colorpicker-position='bottom' ng-model='fontColor' style='color: {{fontColor}}'><i class='fa fa-font '></i></button>",
action: function (deferred) {
var self = this;
if (typeof self.listener == 'undefined') {
self.listener = self.$watch('fontColor', function (newValue) {
console.log(newValue);
self.$editor().wrapSelection('foreColor', newValue);
});
}
self.$on('colorpicker-selected', function () {
deferred.resolve();
});
self.$on('colorpicker-closed', function () {
deferred.resolve();
});
return false;
}
});
あなたの洞察に感謝します!