Ошибка: "Селекторы не реализованы"
Мне сложно выбрать элемент с angular. Я должен сделать глупую ошибку:
function Root($scope) {
$scope.elem = angular.element('div');
}
Ошибка:
Error: selectors not implemented
at Error (<anonymous>)
at Object.JQLite [as element] (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:1523:13)
at new Root (http://fiddle.jshell.net/kzX9z/7/show/:28:27)
at invoke (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:2795:28)
at Object.instantiate (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:2805:23)
at $get (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:4621:24)
at $get.i (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:4200:17)
at forEach (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:117:20)
at nodeLinkFn (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:4185:11)
at compositeLinkFn (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:3834:14) angular.js:5563
$get angular.js:5563
$get angular.js:4661
$get.Scope.$apply angular.js:7890
SNAKE_CASE_REGEXP angular.js:930
invoke angular.js:2788
bootstrap angular.js:928
angularInit angular.js:904
(anonymous function) angular.js:14397
trigger angular.js:1695
event.preventDefault angular.js:1930
forEach angular.js:110
eventHandler
Воспроизведено в этой скрипке
Что я делаю неправильно? Я включил jQuery. Разве это не должно работать?
Ответы
Ответ 1
Это потому, что для jQuery нужно ссылаться до angular. JSFiddle зарегистрировал Angular 1.0.2 FIRST, а затем jquery verson, который вы добавили в качестве ресурса.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js"></script>
Таким образом, Angular знает, что он может использовать JQuery, а не JQLite. После этого селектор будет работать в angular.element()
Здесь ваша скрипка, обновленная для ссылки на скрипты в правильном порядке (и немного изменилась, см. комментарии)
Если у вас нет JQuery, вы можете вручную выбрать элемент DOM.
var div = document.querySelector('div');
$scope.elem = angular.element(div);