Quiero pasar el userNamede una lista de userNamelos clics de un usuario que ha iniciado sesión a twitter bootstrap modal. Estoy usando griales con AngularJS , donde los datos se hace a través de AngularJS .
Configuración
Mi página de vista de griales encouragement.gspes
<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>
Mi encourage/_encouragement_modal.gspes
<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>
Entonces, ¿cómo puedo pasar userNamea encouragementModal?
javascript
twitter-bootstrap
grails
angularjs
prayagupd
fuente
fuente

Respuestas:
Para pasar el parámetro, debe usar resolver e inyectar los elementos en el controlador
Ahora, si va a usar así:
en este caso, editId no estará definido. Necesitas inyectarlo, así:
Ahora funcionará sin problemas, me enfrento al mismo problema muchas veces, una vez inyectado, ¡todo comienza a funcionar!
fuente
El otro no funciona. Según los documentos, esta es la forma en que debe hacerlo.
Ver plunkr
fuente
Alternativamente, puede crear un nuevo alcance y pasar parámetros a través de la opción de alcance
En su controlador modal, pase $ scope, entonces no necesita pasar y itemsProvider o lo que sea que lo haya llamado
fuente
$scope.$new(true)para crear un nuevo alcance aislado sin la necesidad de inyectar$rootScope.resolve) es que los argumentos son obligatorios, por lo que cada vez que abre un modal, debe resolver todos los argumentos o la llamada a$modal.open()fallará porque el controlador quiere sus argumentos. Al usar este ingeniososcopetruco, las dependencias se vuelven opcionales.También puede pasar parámetros fácilmente al controlador modal agregando una nueva propiedad con una instancia de modal y llevarla al controlador modal. Por ejemplo:
A continuación se muestra mi evento de clic en el que quiero abrir la vista modal.
Controlador modal:
fuente
Intenté lo siguiente.
Llamé
ng-clickal controlador de angularjs en el botón Animar ,Puse
userNamedeencouragementModaldesde AngularJS controlador.Proporcioné un lugar (
userName) para obtener el valor del controlador angularjsencouragementModal.Funcionó y me saludé.
fuente
angular.copy(user).Realmente deberías usar Angular UI para esas necesidades. Échale un vistazo: Diálogo de interfaz de usuario angular
En pocas palabras, con el diálogo de interfaz de usuario angular, puede pasar una variable de un controlador al controlador de diálogo usando
resolve. Aquí está su controlador "de":Y en su controlador de diálogo:
EDITAR: Desde la nueva versión del ui-dialog, la entrada de resolución se convierte en:
resolve: { username: function () { return 'foo'; } }fuente
resolve: function(){return {username: 'foo'}}resolve: { username: 'foo'}Simplemente puede crear una función de controlador y pasar sus parámetros con el objeto $ scope.
fuente
Si no está utilizando AngularJS UI Bootstrap, así es como lo hice.
Creé una directiva que contendrá todo ese elemento de su modal y volverá a compilar el elemento para inyectar su alcance en él.
Supongo que su plantilla modal está dentro del alcance de su controlador, luego agregue la directiva my-modal a su plantilla. Si guardó el usuario en el que se hizo clic en $ scope.aModel , la plantilla original ahora funcionará.
Nota: El alcance completo ahora es visible para su modal, por lo que también puede acceder a $ scope.users en él.
fuente