- У меня есть компонент, который используется несколько раз на одной странице.
- Первая строка кода в контроллере хранит «this» в «self», чтобы всегда обращаться к нужной области видимости.
- Когда я вызываю оператор функции и ссылаюсь на self.content (который заполнен уникальным массивом для всех компонентов), self всегда ссылается на последний созданный компонент, а не на себя.
Почему self.content внезапно ссылается на другую область видимости с оператором функции (function validateContent()
вместо self.validateContent = function () {...}
?
Я обошел эту проблему, сделав оператор функции встроеннымодин на себя self.validateContent = function() {...}
.
component('panel', {
binding: {
Content: '<' // is filled with a unique array per used component.
},
controller: function () {
let self = this;
self.onSelect() { // is called when an item is selected.
/* item selection logic */
function validateContent(); // Validate content after selection.
self.Content.forEach(/*...*/);
// Here self is using the scope from the last created component
// and not the "true" self.
}
}
validateContent();
}
});
Я ожидал, что self ссылается на область действия компонента, так как не вижу причин для validateContent () внезапно ссылаться на область действия других компонентов.
Но при выводе self на консоль он содержит данные из последнего созданного компонента вместо текущего.