Учитывая это довольно простой угловой обертку для кнопки JQuery UI:Угловая Scope в директивах
angular.module('Sample.controllers', [])
.controller('mainController', ['$scope',
function($scope) {
$scope.jump = function() {alert("jump");};
}])
.directive('jquiwButton', function() {
return {
scope: {},
restrict: 'A',
replace:true,
link: function(scope, element, attrs) {
var options = {};
if (angular.isDefined(attrs["jquiDisabled"])) {
options.disabled = attrs["jquiDisabled"];
}
if (angular.isDefined(attrs["jquiIconPrimary"])) {
if (!angular.isDefined(options.icons.primary)) {
options.icons ={};
}
options.icons.primary = attrs["jquiIconPrimary"];
}
if (angular.isDefined(attrs["jquiIconSecondary"])) {
if (!angular.isDefined(options.icons.secondary)) {
options.icons ={};
}
options.icons.secondary = attrs["jquiIconSecondary"];
}
if (angular.isDefined(attrs["jquiLabel"])) {
options.label = attrs["jquiLabel"];
}
if (angular.isDefined(attrs["jquiText"])) {
options.text = attrs["jquiText"];
}
element.button(options);
}
};
});
angular.module('Sample', ['Sample.controllers']);
И разметки.
<body ng-controller="mainController">
<button jquiw-button jqui-label="Hello" ng-click="jump()">Hello</button>
</body>
и он работает отлично, пока я не добавить область, в которой точку я теряю способность использовать стандартные угловые привязки к внешней области. В моем случае разметка `ng-click = 'jump()' теперь не будет работать, потому что не может найти скачок метода, который определяется во внешнем контексте, а не в области выделения. Теперь я знаю, что я могу специально привязать ng-click к внешней области, но я хочу избежать этого, поскольку он требует знания всех возможных директив, которые мне могут понадобиться для привязки.
Итак, мой вопрос: как разрешить другим директивам работать во внешнем пространстве, сохраняя при этом изоляцию?
plunker: http://plnkr.co/edit/eRoOeq?p=preview
Удалить линию 8: scope: {},
и нг-клик вызывает правильную функцию.
Я не думаю, что это можно сделать .... все еще посмотрите, как реализуется ng-repeat .... –