jQuery или jqlite не работают с элементами внутри <ng-view> </ ng-view>

0

index.html:

<div>
<p class="aaa">ppp</p>
<ng-view>

</ng-view>
</div>

general.html

<p class="bbb">pppppp</p>

Javascript

var app = angular.module('StarterApp', ['ngMaterial','ngRoute','ngImgCrop']);

app.config(function($routeProvider){
        $routeProvider
            .when('/general',
                {
                    templateUrl:'../view/general.html'
                })
});

$(document).ready(function() {
    $(".aaa").on("click",function(){
         alert('clicked');
    });
    $(".bbb").on("click",function(){
         alert('clicked');
    });
});

Он работает для элемента с классом = "aaa", но не работает для элементов внутри

 <ng-view></ng-view>

Код jQuery находится вне контроллера.

  • 0
    Ваш <ng-view></ng-view> должен быть <div ng-view></div>
  • 0
    Я изменил их на <div ng-view></div> но это не имеет значения. @AdityaParab
Показать ещё 2 комментария
Теги:
jqlite

1 ответ

0

документ, готовый в jquery, может произойти до того, как угловая закончит загрузку (например, перед тем, как ввести ng-view). Это даже более верно, если вы используете систему сценария по требованию, например require.js.

Таким образом, вы должны

A: Используйте угловую версию документа,

angular.element(document).ready(function () {
    $("#aaa").on("click",function(){
     alert('clicked');
    });
    $("#bbb").on("click",function(){
         alert('clicked');
    });
});

B: (угловой путь)

Создайте угловую директиву для любых пользовательских элементов, которые вы хотите, или форму или виджет, или w/e, которые вы строите (разделите его), чтобы вы могли обрабатывать ссылку или компилировать функцию директив, где вы можете подписаться на события на элемент (например, якорь) и иметь доступ к объектам события.

  • 0
    На самом деле, сейчас я даже не использую угловые контроллеры, я делаю директивы для всего и использую bindToController, чтобы мне не приходилось использовать объект $ scope, чтобы избавиться от проблем наследования $ scope. teropa.info/blog/2014/10/24/… Действительно крутая вещь в bindToController и директивах заключается в том, что вы можете сделать свой контроллер директив глобальным или экземпляром. Это означает, что вы можете разработать директиву, которая использует тот же экземпляр своего контроллера, создает новые экземпляры.
  • 0
    Я изменил $ (document) на angular.element (document), но он все еще не работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню