2015-05-20 2 views
3

В моем без углового кода я получаю объект контроллера через следующего кодНевозможно получить объект AngularJS контроллера

var controllerElement = angular.element('[ng-controller="' + controllerName + '"]'); 
var controller = controllerElement.controller(); 

Он был прекрасно работает до позавчерашнего дня, когда вместо контроллера объект контроллера объекта имеет некоторые $ получить. ч {}

После кода возвращает правильный объект контроллера, но есть сценарий, в котором угловая бросает исключение:

var $controller = injector.get("$controller"); 
var controller = $controller(controllerName, { $scope: scope }); 

Не могли бы вы PLE помогите мне выяснить, в чем проблема с прежним подходом, т. е. controllerElement.controller();

EDIT: Обнаружена еще одна проблема с последним подходом в том, что она создает экземпляр нового объекта контроллера вместо того, чтобы возвращать исходный элемент, связанный с элементом.

+0

Что такое значение, возвращаемое 'controllerElement.length' –

+0

contrllerElement имеет длину 1, то есть правильный элемент найден – Haris

ответ

1

Я настоятельно рекомендую не смешивать угловой код с внешним JS. Каждый раз, когда вы вызываете Controller, он создаст действительно новый объект, но, насколько я понял из вашего вопроса, вы, вероятно, захотите сделать некоторые манипуляции в нем или его данных. Для постоянных данных между контроллерами или состояниями вашего приложения вы должны использовать Service или Factory, и в нем должно произойти манипулирование им, или из Controller, а не какой-нибудь случайный JS.

Смежные вопросы