$ scope未更新 - 控制器规范

时间:2017-06-20 11:25:27

标签: angularjs angularjs-scope

我有以下路由:

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',

            });
    }]);

当我为特定的html模板指定控制器时,我的$ scope变量不再在视图中更新。

当我拉出特定路线的控制器规格时,情况会恢复正常。

控制器' userCtrl'通过$ location访问,适用于普通用户。反过来,' Ctrl面板'是分配给管理员用户的主要控制器。

有谁能告诉我发生了什么?

2 个答案:

答案 0 :(得分:1)

我没有所有信息,但它正在我的演示中工作。

<强>配置

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',

            });
    }]);

您的控制器的定义:

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>

答案 1 :(得分:0)

我很抱歉igenuidade。我相信页面在同一个控制器中,我绝不会错过参考:

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

实际上,视图panel.html和makePanel.html将使用相同的控制器结构,但是每个视图我们将有一个实例(变量将被重置)。 在我的情况下,我使用工厂函数来解决问题。每当我静音控制器时,我通过set()存储感兴趣的信息并通过get()获取;

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

});