Пожалуйста, посмотрите на этот пример, так как это лучший способ объяснить проблему.Почему не будет компилировать работу с сервисом с помощью директивы?
В этом примере , если вы щелкнете ссылку директивы, она не скомпилирует шаблон, а отобразит его как «{{1 + 1}}».
С другой стороны, при нажатии на «Простая ссылка» он скомпилирует шаблон и отображает «2» вместо.
angular.module('myApp', [])
.provider('$popup', function() {
var service = {};
this.$get = ['$compile', '$rootScope', function($compile, $rootScope) {
var template = $('<div>{{1+1}}</div>');
service.go = function() {
$(document.body).append(template);
$compile(template)($rootScope);
}
return service;
}];
})
.directive('popupLink', ['$popup', function($popup) {
return {
restrict: 'A',
scope: {},
link: function link(scope, element, attrs) {
element.click(function() {
$popup.go();
return false;
});
}
};
}])
.controller('mainCtrl', ['$scope', '$popup', function($scope, $popup) {
$scope.go = function() {
$popup.go();
};
}])
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script>
<div ng-app="myApp" ng-controller="mainCtrl">
<a ng-href="/test" popup-link>Directive link</a>
<a href="#" ng-click="go()">Simple link</a>
</div>
Мой вопрос, почему не template
компиляции с помощью директивы? (но это делается в контроллере)
И как я могу исправить это, чтобы оно также скомпилировалось в директиве?
P.S. Вот ссылка jsbin в случае, если вы хотите играть с кодом: http://jsbin.com/vuzutipedu/edit?html,js,output
Попробуйте так: 'element.bind ('нажмите', функция() {...});' –
По default, какое значение отображается? Прежде чем нажимать метки привязки? –
Этот метод действительно используется в приложении с угловым 1.2? Это трехлетний выпуск, и многие новые угловые методы не будут работать в этой версии. И наоборот, некоторые вещи, которые были необходимы в 1.2, не нужны в текущей версии. – Claies