2014-12-18 1 views
1

Позвольте мне поместить сценарий, в котором я застрял, попробую объяснить просто, а не рассказывать фактическое.Как я могу получить значение элемента HTML внутри Angular JS conroller во время загрузки страницы

1st: Я на странице 1. Там, где есть несколько предметов с уникальными именами. 2nd: Я нажму на один объект, который вызовет действие struts2 (позволяет вызвать его ActionA) на задней стороне с уникальным именем субъекта в качестве параметра запроса (Тип запроса = GET). 3rd: Действие A будет перенаправляться только на страницу «Учебное пособие». 4-й: при загрузке он сделает вызов AJAX другому действию Struts2 (позволяет вызывать его ActionB), который вернет JSON, содержащий учебники для этого объекта.

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

Примечание: Я использую плагин Struts2-JSON, поэтому вам не нужны два действия, один для перенаправления страницы другой для получения JSON при загрузке страницы.

Решение: я попытался получить значение параметра запроса, которое является именем Subject, помещая скрытое поле на странице Tutorial. Но неспособность получить значение изнутри контроллера Angular JS.

+0

Вы используете какой-либо маршрутизатор? ngRoute/uiRouter? – KenavR

+0

Нет Я новичок в угловой JS, может ли это ngRoute помочь мне в этой ситуации? – Dibyendu

+0

Я не знаком со стойками, поэтому я неправильно понимаю сценарий. Вы визуализируете свой html на сервере? Обычно вы переключаете страницы с помощью ngRoute/uiRouter, и у этих модулей есть метод «разрешить», где вы можете загружать любые данные, необходимые для страницы перед рендерингом. – KenavR

ответ

1

Вот пример для общего обслуживания: http://plnkr.co/edit/P2ItVj20RYCJVjdIaXfY

Но вы правы, если вы перезагрузите страницу, это не работает. Я думаю, что ваш сценарий нуждается в настройке, если вы хотите использовать угловую или любую другую структуру одной страницы. Одной из целей одностраничных приложений является минимизация перезагрузок, предпочтительнее нет. Если ваше действие A возвращает только шаблон, в котором вы хотите ввести результат действия B, я рекомендую посмотреть ngRoute или uiRouter, где вы определяете шаблон (результат действия A) и контроллер для этого вида. Этот шаблон заменяет новый раздел на странице вашей страницы (ng-view). Если вы оба новичок, я бы рекомендовал посмотреть на uiRouter, это похоже, но это дает вам больше возможностей. Оба предоставляют функцию «разрешения», где вы можете загрузить свое действие B до отображения страницы.

код из plunker

angular.module("app", []) 
.controller("MainController", ['SharedService', function(SharedService) { 
    var vm = this; 
    //bind to service 
    vm.service = SharedService; 


}]); 

Сервис

angular.module("app") 
.factory("SharedService", [function() { 
    var service = { 
    id: "test" 
    } 

    return service; 
}]); 
Смежные вопросы