Я пытаюсь отредактировать директиву angular, написанную кем-то другим, и столкнулся с проблемой. Это директива атрибута, и я хочу наблюдать за значением, переданным в качестве значения атрибута для изменений.
Это работает, когда я даю ему изолированную область и наблюдаю за свойством, используя scope.$watch. Однако использование изолированной области нарушает директиву, поскольку изначально для нее была установлена область действия true, которая нужна для других целей (насколько я понимаю, это означает, что она наследует родительскую область).
Итак, мой вопрос: как я могу наследовать родительскую область, но также следить за значением атрибута?
Чтобы помочь прояснить, вот базовый пример директивы:
return {
scope: {
myGridsterItem: "=gridsterItem"
},
restrict: 'EA',
controller: 'GridsterItemCtrl',
controllerAs: 'gridsterItem',
require: ['^gridster', 'gridsterItem'],
link: function(scope, $el, attrs, controllers) {
.....
// need to dynamically update draggable/resizable of individuaol gridster item if properties change
scope.$watch("myGridsterItem.draggable", function(newVal) {
draggable.updateDraggable(newVal);
}, true);
scope.$watch("myGridsterItem.resizable", function(newVal) {
resizable.updateResizable(newVal);
}, true);
.....
}
}
Это вызывает ошибку из-за того, что он не наследует родительскую область. А если я поставлю
scope: true
Моя ошибка устранена, но обработчики часов никогда не запускаются.
Грубый план HTML:
<div gridster="gridsterOpts">
<ul>
<li gridster-item="getPrefs(portlet.id)", ng-repeat="portlet in getPortlets()">
.....
</li>
</ul>
</div>
Пожалуйста, помогите мне, спасибо!