Я хочу передать userName
из списка userName
sa, вошедшего в систему, пользователь нажимает на twitter bootstrap modal
. Я использую grails с angularjs , где данные отображаются через angularjs .
Конфигурация
Мой Grails просмотр страницы encouragement.gsp
является
<div ng-controller="EncouragementController">
<g:render template="encourage/encouragement_modal" />
<tr ng-cloak
ng-repeat="user in result.users">
<td>{{user.userName}}</rd>
<td>
<a class="btn btn-primary span11" href="#encouragementModal" data-toggle="modal">
Encourage
</a>
</td>
</tr>
Мое encourage/_encouragement_modal.gsp
это
<div id="encouragementModal" class="modal hide fade">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-hidden="true">×</button>
<h3>Confirm encouragement?</h3>
</div>
<div class="modal-body">
Do you really want to encourage <b>{{aModel.userName}}</b>?
</div>
<div class="modal-footer">
<button class="btn btn-info"
ng-click="encourage('${createLink(uri: '/encourage/')}',{{aModel.userName}})">
Confirm
</button>
<button class="btn" data-dismiss="modal" aria-hidden="true">Never Mind</button>
</div>
</div>
Итак, как я могу перейти userName
на encouragementModal
?
javascript
twitter-bootstrap
grails
angularjs
прайагупд
источник
источник
Ответы:
Чтобы передать параметр, вам нужно использовать разрешение и ввести элементы в контроллер
Теперь, если вы будете использовать вот так:
в этом случае editId будет неопределенным. Его нужно вводить, например:
Теперь он будет работать гладко, я сталкиваюсь с одной и той же проблемой много раз, после инъекции все начинает работать!
источник
Другой не работает. Согласно документам, вы должны это сделать.
См. Plunkr
источник
В качестве альтернативы вы можете создать новую область и передать параметры через параметр области
В вашем модальном контроллере перейдите в $ scope, тогда вам не нужно передавать и itemsProvider или что-то еще, что вы назвали
источник
$scope.$new(true)
создать новую изолированную область без необходимости вводить$rootScope
.resolve
) заключается в том, что аргументы являются обязательными, поэтому каждый раз, когда вы открываете модальное окно, вы должны разрешать все аргументы, иначе вызов$modal.open()
завершится неудачно, потому что контроллеру нужны его аргументы. Используя этот изящныйscope
трюк, зависимости становятся необязательными.Вы также можете легко передать параметры модальному контроллеру, добавив новое свойство с экземпляром модального окна и передать его модальному контроллеру. Например:
Ниже приведено мое событие щелчка, для которого я хочу открыть модальное представление.
Модальный контроллер:
источник
Я пробовал, как показано ниже.
Я позвонил
ng-click
контроллеру angularjs на кнопку поощрения ,Я поставил
userName
изencouragementModal
от angularjs контроллера.Я предоставил место (
userName
) для получения значения от контроллера angularjsencouragementModal
.Это сработало, и я отсалютовал себе.
источник
angular.copy(user)
.Для этого вам действительно стоит использовать Angular UI. Проверьте это: Angular UI Dialog
Вкратце, с помощью диалогового окна Angular UI вы можете передавать переменную из контроллера в контроллер диалога, используя
resolve
. Вот ваш контроллер "от":И в вашем контроллере диалога:
РЕДАКТИРОВАТЬ: Начиная с новой версии ui-dialog, запись разрешения становится:
resolve: { username: function () { return 'foo'; } }
источник
resolve: function(){return {username: 'foo'}}
resolve: { username: 'foo'}
Вы можете просто создать функцию контроллера и передать свои параметры с помощью объекта $ scope.
источник
Если вы не используете AngularJS UI Bootstrap, вот как я это сделал.
Я создал директиву, которая будет содержать весь этот элемент вашего модального окна, и перекомпилировать элемент, чтобы добавить в него вашу область видимости.
Я предполагаю, что ваш модальный шаблон находится в области действия вашего контроллера, а затем добавьте директиву my-modal в свой шаблон. Если вы сохранили пользователя, которого щелкнули, в $ scope.aModel , исходный шаблон теперь будет работать.
Примечание: вся область видимости теперь видна вашему модальному окну, поэтому вы также можете получить доступ окну, в нем $ scope.users .
источник