Я хочу вызвать пользовательскую директиву AngularJS, содержащую инструкции jQuery. Как это можно сделать? Я прочитал об этой функции в директиве?Угловая директива Trigger от вызова контроллера
идеи?
Я хочу вызвать пользовательскую директиву AngularJS, содержащую инструкции jQuery. Как это можно сделать? Я прочитал об этой функции в директиве?Угловая директива Trigger от вызова контроллера
идеи?
Вы можете использовать услугу для связи между контроллером и директивой.
Service может выглядеть следующим образом:
app.service("directiveService", function() {
var listeners = [];
return {
subscribe: function(callback) {
listeners.push(callback);
},
publish: function(msg) {
angular.forEach(listeners, function(value, key) {
value(msg);
});
}
};
});
И директива может ответить на службу:
app.directive("jQueryDirective", function(directiveService) {
directiveService.subscribe(function(msg) {
// pretend this is jQuery
document.getElementById("example")
.innerHTML = msg;
});
return {
restrict: 'E'
};
});
Просто заменить то, что я сделал для манипуляций JQuery, и вы должны иметь то, что вам нужно.
Вот рабочая скрипку: http://jsfiddle.net/jeremylikness/wqXYx/
Каковы преимущества делают это таким образом, используя $ broadcast/$ on? – Strawberry
Трансляция создает зависимость от $ scope, а также от $ scope hiearchy. Если вы полагаетесь на то, что вы вызываете много слушателей, которые могут или не должны быть заинтересованы в сообщении, в то время как явная служба предназначена только для компонентов, которые в ней нуждаются. Это также облегчает тестирование, является многоразовым и самодостаточным. –
http://stackoverflow.com/questions/16935095/correct-way-to-integrate-jquery-plugins-in-angular-js – Ismael