Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 16.09.2014, 15:19
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Angular - это не js, это мерзость со своей говнопарадигмой.
__________________
29375, 35
Ответить с цитированием
  #12 (permalink)  
Старый 16.09.2014, 15:24
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

ibolgenos,
Да, там надо ковыряться. Тем более что у вас там не просто angular, а angular с requirejs, и там могут быть применены нестандартные решения (хотя скрещивание ангулара с чем-либо уже нестандартное решение)
Ответить с цитированием
  #13 (permalink)  
Старый 17.09.2014, 14:54
Интересующийся
Отправить личное сообщение для ibolgenos Посмотреть профиль Найти все сообщения от ibolgenos
 
Регистрация: 15.09.2014
Сообщений: 11

Я взял код примера («Add Some Control» angularjs.org/#add-some-control) с сайта AngularJS. Я хочу вызвать метод addTodo() используя консоль Chrome, но не знаю как. Если ввести консоль addTodo() или scope$.addTodo(), то получу сообщение «ReferenceError: addTodo is not defined». Поскольку я не программирую на JS и уж тем более не знаком с AngularJS, не могли бы вы сказать, что нужно ввести в консоль?

Вообще возможно ли вызвать метод в AngularJS со стороны? Или все методы вызвываються только внутри самого AngularJS?

Ответить с цитированием
  #14 (permalink)  
Старый 17.09.2014, 15:02
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Ничего) Ангулар не делает глобальных объектов (точнее делает, но добраться через них ОЧЕНЬ сложно). Он, как и любой фреймворк, рассчитан на управление его объектами через его апи. Из консоли вы этого не сделаете без костылей.
Ответить с цитированием
  #15 (permalink)  
Старый 17.09.2014, 15:27
Интересующийся
Отправить личное сообщение для ibolgenos Посмотреть профиль Найти все сообщения от ibolgenos
 
Регистрация: 15.09.2014
Сообщений: 11

А вы можете добраться до функции addTodo() или сделать так, чтобы она стала доступна? Это вроде маленький пример с сайта AngularJS.
Ответить с цитированием
  #16 (permalink)  
Старый 17.09.2014, 15:46
Интересующийся
Отправить личное сообщение для ibolgenos Посмотреть профиль Найти все сообщения от ibolgenos
 
Регистрация: 15.09.2014
Сообщений: 11

Вот тут сказали как вызвать функцию из примера - https://groups.google.com/forum/#!to...ar/6yoDLdYVRjc

Теперь осталось разобраться в своем...)
Ответить с цитированием
  #17 (permalink)  
Старый 17.09.2014, 15:47
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

ibolgenos,
Вы не понимаете. Так делать НЕ НАДО. Разбирайтесь с фреймворком и делайте правильно. Если это вам понадобилось - значит что-то у вас не правильно сделано.

Самый простой способ сделать то что вы хотите - в контроллере после
.controller('TodoController', ['$scope', function($scope) {

написать
window.$scope = $scope;

тогда вызов addTodo():
$scope.addTodo();


Но это костыльный вызов. И после каждого такого вызова вы можете ловить неожиданные глюки, часть из которых может исправить вызов
$scope.$apply();

После каждого такого костыля.

Лучше изучить фреймворк чем наполнять его костылями.
Ответить с цитированием
  #18 (permalink)  
Старый 18.09.2014, 09:54
Интересующийся
Отправить личное сообщение для ibolgenos Посмотреть профиль Найти все сообщения от ibolgenos
 
Регистрация: 15.09.2014
Сообщений: 11

Сообщение от tsigel Посмотреть сообщение
ibolgenos, Вы не понимаете. Так делать НЕ НАДО. Разбирайтесь с фреймворком и делайте правильно. Если это вам понадобилось - значит что-то у вас не правильно сделано.
Попробую поставить свою задачу по другому. У меня есть приложение на Java (использующее фреймворк Vaadin) и есть страница на JS (использующее фреймворк AngularJS). Я хочу чтобы мое приложение взаимодействовало с этой страницей.

Например, страницей будет являться главная страница AngularJS, на которой находиться пример, в котором при нажатии на кнопку появляется новый чекбокс. Так вот, я хочу чтобы чекбокс добавлялся и при нажатии на кнопку моего приложения. Как это сделать? Есть другие решения?
Ответить с цитированием
  #19 (permalink)  
Старый 18.09.2014, 13:13
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Эмулируйте действия пользователем (например как с кликом) или взаимодействуйте стейтами (через урл).
Ответить с цитированием
  #20 (permalink)  
Старый 18.09.2014, 15:07
Интересующийся
Отправить личное сообщение для ibolgenos Посмотреть профиль Найти все сообщения от ibolgenos
 
Регистрация: 15.09.2014
Сообщений: 11

Разве эмулирование будет лучше? Особенно когда мне нужно не только кликнуть, но и заполнить некоторые поля.

Можете рассказать подробнее про "стейты", что за зверь? И если можно то попробуйте с помощью "стейта" кликнуть по кнопке, которая на официальном сайте AngularJS
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вызвать функцию из переменной? sss2019 Общие вопросы Javascript 7 02.09.2014 13:34
как вызвать анонимную функцию которая находится в подключенном файле(.js) arsen97 Общие вопросы Javascript 3 03.08.2014 00:23
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Как вызвать функцию при загрузке страницы? Yevgeniy Events/DOM/Window 1 30.01.2013 17:34
Как вызвать функцию из функции ? PheonixS AJAX и COMET 7 20.06.2010 09:51