0
Использование AngularStrap. Вызов выпадающего сервиса $ с контроллера показывает всплывающее окно, но щелчок на элементах не вызывает соответствующий код.
Plunk, чтобы продемонстрировать это.
http://plnkr.co/edit/tNAX7liFSNh71XcOUecs
var dropdown = $dropdown(element, {
show: false,
trigger: "manual",
html: true
});
dropdown.$scope.content = [
{
"text": "<i class=\"fa fa-globe\"></i> Display an alert",
"click": "alert(\"Holy guacamole!\")"
},
{
"divider": true
},
{
"text": "Separated link",
"href": "#separatedLink"
}
];
element.on("contextmenu", function(event) {
event.preventDefault();
console.log("dropdown right click");
scope.$apply(function() {
scope.dropdown_show = true;
});
});
Спасибо. Это работало для предупреждения. Смешно, даже console.log() в обработчике кликов не работает. Итак, что такое $ scope для выпадающего списка в этом случае? Является ли это областью обертывания ng-repeat? – amahfouz
, если вы посмотрите на исходный код dropdown.tpl.html, он фактически использует $ eval для оценки вашей строки щелчка. Для получения дополнительной информации о $ eval, пожалуйста, прочитайте http://stackoverflow.com/questions/15671471/angular-js-how-does-eval-work-and-why-is-it-different-from-vanilla-eval. Что касается области видимости, вы не передали ей свой объем, поэтому раскрывающийся список $ создал для себя новую область. если вы передадите ему текущую область действия, она создаст новую область действия, расширив ту, которую вы предоставили. – sdfacre