Acabo de comenzar a aprender Angular JS y creé algunas muestras básicas, sin embargo, estoy atascado con el siguiente problema.
He creado 2 módulos y 2 controladores.
shoppingCart -> ShoppingCartController
namesList -> NamesController
Hay vistas asociadas para cada controlador. La primera vista se muestra bien, pero la segunda no. No hay errores
Por favor ayudame a resolver este problema.
También existe la posibilidad de agregar una consola en la Vista para verificar qué valores se pasan del Controlador.
por ejemplo, en el siguiente div podemos agregar console.log y generar los valores del controlador
<div ng-app="shoppingCart" ng-controller="ShoppingCartController">
</div>
{{item.product_name}}
realidad "imprime" un valor de su modeloRespuestas:
Básicamente, como mencionó Cherniv, necesitamos arrancar los módulos para tener múltiples aplicaciones ng dentro de la misma página. Muchas gracias por todas las entradas.
fuente
Para ejecutar varias aplicaciones en un documento HTML, debe iniciarlas manualmente utilizando angular.bootstrap ()
HTML
JS
La razón de esto es que solo una aplicación AngularJS se puede iniciar automáticamente por documento HTML. Lo primero que se
ng-app
encuentre en el documento se usará para definir el elemento raíz para auto-bootstrap como una aplicación.En otras palabras, si bien es técnicamente posible tener varias aplicaciones por página, el marco angular solo instanciará e inicializará automáticamente una directiva ng-app.
fuente
ngApp
puede cargar automáticamente una directiva por documento HTML, pero puede tener varias aplicaciones siempre que inicie manualmente las siguientes.namesList
ubicado el módulo? ¿Podría por favor actualizar su respuesta, para que sea más clara?Puede usar
angular.bootstrap()
directamente ... el problema es que pierde los beneficios de las directivas.Primero debe obtener una referencia al elemento HTML para arrancarlo, lo que significa que su código ahora está acoplado a su HTML.
En segundo lugar, la asociación entre los dos no es tan evidente. Con
ngApp
usted puede ver claramente qué HTML está asociado con qué módulo y sabe dónde buscar esa información. Peroangular.bootstrap()
podría invocarse desde cualquier parte de su código.Si va a hacerlo de la mejor manera, sería usando una directiva. Que es lo que hice. Se llama
ngModule
. Así es como se vería su código al usarlo:Puede obtener el código fuente en:
http://www.simplygoodcode.com/2014/04/angularjs-getting-around-ngapp-limitations-with-ngmodule/
Se implementa de la misma manera que
ngApp
. Simplemente llamaangular.bootstrap()
detrás de escena.fuente
En mi caso, tuve que completar el arranque de mi segunda aplicación
angular.element(document).ready
para que funcione:fuente
angular.element(callback)
lugar deangular.element(document).ready(callback))
. Ver AngularJS angular.element API Reference . También github.com/angular/angular.js/commit/…Aquí hay un ejemplo de dos aplicaciones en una página html y dos conrollers en una aplicación:
fuente
Puede fusionar múltiples módulos en un rootModule y asignar ese módulo como ng-app a un elemento superior, por ejemplo: etiqueta de cuerpo.
código ex:
fuente
fuente
Solo una aplicación se inicializa automáticamente. Otros deben inicializarse manualmente de la siguiente manera:
Sintaxis:
Ejemplo:
API AngularJS
fuente
Puede definir una aplicación ng raíz y en esta aplicación ng puede definir múltiples nd-Controler. Me gusta esto
fuente
fuente
Updated JsFiddle:
http://jsfiddle.net/ep2sQ/1011/fuente
ng-app
? jsfiddle.net/vwcbtzdgÚselo
angular.bootstrap(element, [modules], [config])
para iniciar manualmente la aplicación AngularJS (para obtener más información, consulte la guía Bootstrap ).Vea el siguiente ejemplo:
fuente
fuente