template stateparams sref example angularjs ionic-framework angular-ui-router state ionic-view

stateparams - ui-view angularjs



UI-Router Multiple Views Single Controller no funciona (1)

Me gustaría utilizar un controlador definido en vistas, pero $scope no define nada. ¿Hay alguna forma de hacer esto? Por favor comparte un ejemplo simple para entender.

Tengo este index.html

<body ng-app="ehc"> <h1>{{home}}+{{a}}+{{b}}</h1> <ion-side-menus enable-menu-with-back-views="false" delegate-handle="left"> <!-- Left menu --> <ion-side-menu side="left" is-enabled="true"> <ion-header-bar class="bar-stable">AAA</ion-header-bar> <ion-content> <div class="list"> <div class="item item-divider"> Candy Bars </div> </div> </ion-content> </ion-side-menu> <ion-side-menu-content edge-drag-threshold="true" drag-content="true"> <!-- Main content, usually <ion-nav-view> --> <ion-nav-bar class="bar-positive" > <ion-nav-title> <h2>hello world title *{{home}}*</h2> </ion-nav-title> <ion-nav-buttons side="left"> <button class="button button-icon button-clear ion-navicon" menu-toggle="left"></button> </ion-nav-buttons> </ion-nav-bar> <ion-view> <ion-content class="has-header"> <div class="row"> <div class="col-50"> <div ui-view="a"></div> </div> <div class="col-50"> <div ui-view="b"></div> </div> </div> </ion-content> </ion-view> </ion-side-menu-content> <script type="text/ng-template" id="templates/a.html"> <ion-view> <ion-content class="has-header"> **{{a}}** </ion-content> </ion-view> </script> <script type="text/ng-template" id="templates/b.html"> <ion-view> <ion-content class="has-header"> **{{b}}** </ion-content> </ion-view> </script> </body> <script src="js/app.js"></script>

Y esta es mi definición de modelo app.js

var app = angular.module("ehc", ["ionic"]) .config(function ($urlRouterProvider, $stateProvider) { $urlRouterProvider.otherwise(''/''); $stateProvider.state(''Home'', { url: ''/'', controller: "HomeCtrl", //template:"<ion-header-bar></ion-header-bar><ion-content><h1>hello dal AngularJs</h1></ion-content>", views: { "a": { templateUrl: ''templates/a.html'' }, "b": { templateUrl: ''templates/b.html'' } } }); }).controller("HomeCtrl", ["$scope", "$ionicSideMenuDelegate", "$routeParams", "config", "$q", "$http"], function ($scope, $ionicSideMenuDelegate, $routeParams, config, $q, $http) { $scope.toggleLeft = function () { $ionicSideMenuDelegate.toggleLeft(); }; //carico le lingue e il menu console.log("AAAAAAAAAAAA"); $scope.home = "Pippo"; $scope.a="XAX"; $scope.b="XBX"; })

la consola está vacía y también el alcance en la plantilla html. Por favor, si tiene la solución, use un ejemplo muy simple.

He leído aquí y pensé que funcionaba Rakrap Jaknap respondió el 2015-04-17 08:01


Problema muy similar: ¿Por qué el controlador no funciona en UI-enrutador de angularjs?

El punto aquí es:

El controlador siempre pertenece a View, never to state.

En otras palabras, para usar el mismo tipo de controlador (pero dos instancias para cada vista), tenemos que hacer ese tipo de declaración:

$stateProvider.state(''Home'', { url: ''/'', // instead of this //controller: "HomeCtrl", views: { "a": { templateUrl: ''templates/a.html'', controller: "HomeCtrl", // we need this }, "b": { templateUrl: ''templates/b.html'', controller: "HomeCtrl", // and also this } } });

En caso de que deseemos compartir algunas cosas entre muchas vistas, necesitamos una técnica diferente a la de "mismo controlador". Ver:

¿Cómo comparto $ scope data entre estados en angularjs ui-router?

Otra idea, podría ser cubierta aquí:

instanciación de alcance y controlador con enrutador ui

E incluyendo texto mecanografiado, hay una descripción detallada y un ejemplo de cómo todas las vistas / estados podrían apuntar a algún RootModel común

Se está ejecutando el ciclo de resumen angular, pero no se está actualizando el valor de vinculación ng