Rogério Oliveira
Rogério Oliveira

Reputation: 514

$scope not updated - controller specification

I have the following routing:

app.config(['$routeProvider',

    function ($routeProvider) {
        $routeProvider.
            when('/panel', {
                templateUrl: 'views/panel.html'
            }).
            when('/make', {
                templateUrl: 'views/makePanel.html',
                controller: 'painelCtrl'
            }).
            when('/paneluser', {

                templateUrl: 'views/panelUser.html',
                controller: 'userCtrl'

            }).
            when('/paneluserblocks', {
                templateUrl: 'views/userPanels.html',
                controller: 'userCtrl'
            }).
            when('/registred', {

                templateUrl: 'views/registredPanels.html'
            }).
             when('/color', {

                templateUrl: 'views/color.html',
                controller: 'alarmCtrl'
            }).
            otherwise('/', {
                templateUrl: 'Index.html',

            });
    }]);

When I specify a controller for a particular html template, my $scope variables are no longer updated in the view.

When I pull out the controller specification for a particular route, things return to normal.

The controller 'userCtrl' is accessed through $location and is intended for ordinary users. In turn, 'Ctrl panel' is the primary controller assigned to admin users.

Could anyone tell me what's going on?

Upvotes: 0

Views: 51

Answers (2)

Rogério Oliveira
Rogério Oliveira

Reputation: 514

I'm sorry for the igenuidade. I believed that the pages being in the same controller, I would never miss the reference:

When ('/panel', {
                 TemplateUrl: 'views/panel.html',
    Controller: 'panelCtrl'
             }).
             When ('/make', {
                 TemplateUrl: 'views/makePanel.html',
            Controller: 'panelCtrl'
             }). cotinue...

In fact, views panel.html and makePanel.html will use the same controller structure, however we will have one instance for each view (variables will be reseted). In my case I used factory functions to solve the problem. Every time I mute controller, I store the information of interest through a set () and get it through a get ();

app.factory("MonitorService", function () {
    var info;
    function set(data) {
        info = data;
    }
    function get() {
        return info;
    }
    return {
        set: set,
        get: get
    }

});

Upvotes: 0

nevradub
nevradub

Reputation: 238

I haven't all information, but it's working in my demo.

Config

var app = angular.module('app',['ngRoute']);
app.config(['$routeProvider',

    function ($routeProvider) {
        $routeProvider.
            when('/panel', {
                templateUrl: 'views/panel.html'
            }).
            when('/make', {
                templateUrl: 'views/makePanel.html',
                controller: 'painelCtrl'
            }).
            otherwise('/', {
                templateUrl: 'Index.html',

            });
    }]);

Definition of your controller:

app.controller('painelCtrl',painelCtrl);
painelCtrl.$inject = ['$scope'] //and more if you need $http, services, ...
function painelCtrl($scope){
     $scope.hello= "hello world"
}

HTML

<h1>{{hello}}</h1>

Upvotes: 1

Related Questions