Eu apenas comecei a aprender o Angular JS e criei alguns exemplos básicos, no entanto, estou com o seguinte problema.
Eu criei 2 módulos e 2 controladores.
shoppingCart -> ShoppingCartController
namesList -> NamesController
Existem visualizações associadas para cada controlador. A primeira exibição é renderizada, mas a segunda não é renderizada. Não há erros.
Ajude-me a resolver esse problema.
Também existe a possibilidade de adicionar console no modo de exibição para verificar quais valores são transmitidos do Controller.
Por exemplo, na div a seguir, podemos adicionar console.log e gerar os valores do controlador
<div ng-app="shoppingCart" ng-controller="ShoppingCartController">
</div>
{{item.product_name}}
na verdade, "impressões" um valor de seu modeloRespostas:
Então, basicamente, como mencionado por Cherniv, precisamos inicializar os módulos para ter vários aplicativos ng dentro da mesma página. Muito obrigado por todas as entradas.
fonte
Para executar vários aplicativos em um documento HTML, você deve inicializá-los manualmente usando angular.bootstrap ()
HTML
JS
A razão para isso é que apenas um aplicativo AngularJS pode ser inicializado automaticamente por documento HTML. O primeiro
ng-app
encontrado no documento será usado para definir o elemento raiz para auto-inicialização como um aplicativo.Em outras palavras, embora seja tecnicamente possível ter vários aplicativos por página, apenas uma diretiva ng-app será instanciada e inicializada automaticamente pela estrutura Angular.
fonte
ngApp
diretiva pode ser carregada automaticamente por documento HTML, mas você pode ter vários aplicativos, desde que inicie manualmente os subsequentes.namesList
localizado o módulo? Você poderia atualizar sua resposta, para que fique mais clara?Você pode usar
angular.bootstrap()
diretamente ... o problema é que você perde os benefícios das diretivas.Primeiro, você precisa obter uma referência ao elemento HTML para inicializá-lo, o que significa que seu código agora está acoplado ao seu HTML.
Em segundo lugar, a associação entre os dois não é tão aparente. Com
ngApp
você, você pode ver claramente qual HTML está associado a qual módulo e você sabe onde procurar essas informações. Masangular.bootstrap()
pode ser invocado de qualquer lugar no seu código.Se você for fazer da melhor maneira possível, use uma diretiva. Foi o que eu fiz. É chamado
ngModule
. Aqui está a aparência do seu código usando-o:Você pode obter o código fonte para isso em:
http://www.simplygoodcode.com/2014/04/angularjs-getting-around-ngapp-limitations-with-ngmodule/
É implementado da mesma maneira que
ngApp
. Simplesmente chamaangular.bootstrap()
nos bastidores.fonte
No meu caso, tive que envolver o bootstrap do meu segundo aplicativo
angular.element(document).ready
para que ele funcionasse:fonte
angular.element(callback)
vez deangular.element(document).ready(callback))
. Consulte Referência da API angularJS angular.element . Também github.com/angular/angular.js/commit/…Aqui está um exemplo de dois aplicativos em uma página html e de dois controladores em um aplicativo:
fonte
Você pode mesclar vários módulos em um rootModule e atribuir esse módulo como ng-app a um elemento superior ex: body tag.
código ex:
fonte
fonte
Somente um aplicativo é inicializado automaticamente. Outros precisam inicializar manualmente da seguinte maneira:
Sintaxe:
Exemplo:
API AngularJS
fonte
Você pode definir um ng-App raiz e neste ng-App você pode definir vários nd-Controler. Como isso
fonte
fonte
Updated JsFiddle:
http://jsfiddle.net/ep2sQ/1011/fonte
ng-app
? jsfiddle.net/vwcbtzdgUse
angular.bootstrap(element, [modules], [config])
para iniciar manualmente o aplicativo AngularJS (para obter mais informações, consulte o guia Bootstrap ).Veja o seguinte exemplo:
fonte
fonte