Начиная с выпуска следующего стабильного AngularJS, я переношу свое приложение с версии 1.0.8 на 1.2.
В AngularJS 1.0.8 можно было создать изолированную область для таких директив, как follow
. Затем директива будет использовать свою собственную функцию test()
вместо функции контроллера test()
.
HTML
<my-dialog property="something">
<button ng-click="test()">Load Test</button>
Check out the test: "{{ testMessage }}"
</my-dialog>
Javascript
.controller('Ctrl', function(scope) {
scope.test = function () {
scope.testMessage = 'CTRL Test loaded! Whooops.';
}
})
.directive('myDialog', function() {
return {
restrict: 'E',
scope: {
property: '='
},
link: function(scope) {
scope.test = function () {
scope.testMessage = 'Isolated Test loaded. Yes!';
}
}
};
В AngularJS 1.2 это поведение больше не работает. Нажатие кнопки запускает функцию управления test()
.
См. это сравнение jsFiddle:
Что именно имеет изменения и как я могу воспроизвести старое поведение?
Примечание
Я понял, что могу разместить шаблон директив внутри дополнительного HTML файла или скомпилировать его как строку, чтобы заставить ее работать (jsFiddle), но в моем случае это слишком много, так как шаблон исправлен и разбиение HTML на несколько частичных файлов HTML - это проблема.
ИЗМЕНИТЬ
@elclanr answer отлично работает, когда нет других свойств для совместного использования. Я обновил jsFiddle, чтобы передать какое-то произвольное свойство. Как мне теперь идти?