Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角度js将数据从配置控制器传递到其他控制器_Angularjs - Fatal编程技术网

Angularjs 角度js将数据从配置控制器传递到其他控制器

Angularjs 角度js将数据从配置控制器传递到其他控制器,angularjs,Angularjs,我有一种情况,我想将数据从控件(在配置中)传递到外部控制器。我已尝试在factory中传递数据,但是在数据更改后,它仍然保持为0(不确定我哪里做错了)。在DynamicController更改后,是否有方法将数据传递到navCtrl?谢谢你的帮助 var app = angular.module('fccrm', ['ngRoute']); app.factory('idService', function(){ var id = 0; var

我有一种情况,我想将数据从控件(在配置中)传递到外部控制器。我已尝试在factory中传递数据,但是在数据更改后,它仍然保持为0(不确定我哪里做错了)。在DynamicController更改后,是否有方法将数据传递到navCtrl?谢谢你的帮助

    var app = angular.module('fccrm', ['ngRoute']);

    app.factory('idService', function(){
        var id = 0;
        var itemsService = {};

        itemsService.set = function(val) {
            id = val;
        };
        itemsService.get = function() {
            return id;
        };

        return itemsService;
    })

    app.controller('navCtrl', ['$scope', 'idService', function($scope, idService){
        $scope.disable = 'disabled';
        console.log(idService.get());
    }])

    app.config(['$routeProvider', function($routeProvider) {
        $routeProvider.when('/:page/:id', {
            template: '',
            controller: DynamicController
        });
    }])

    function DynamicController($scope, $routeParams, $http, idService)
    {
        var templateUrl = '/index.php?controller=lead&action=' + $routeParams.page + '&id=' + $routeParams.id;
        idService.set($routeParams.id);
        $http.post(templateUrl).success(function(data){
            $('#content').html(data);            
        })
    }

如果希望值保持同步—无论加载顺序如何,则应使用$scope。这就是它的设计目的

根据要对值执行的操作,您有许多选项

在视图中显示该值
$scope.displayId=idService.get()
或者更好,为什么不将id添加到
$rootScope
并从那里访问它呢

您希望在navCtrl中的值更改时收到通知,以便进行进一步处理
您可以在DynamicCtrl中使用
$rootScope.$broadcast('routeParamIdChanged',id)
,然后使用
$scope.$on('routeParamIdChanged,fn(ev,id){})
监听更改。

在哪里触发NAVCRL?您是从视图中调用它吗?如果在DynamicController之后调用navCtrl,则navCtrl中的值将为0。@首先使navCtrl触发器平静,因为它在视图中,我无法在DynamicController之后获取它的触发器。谢谢,如果对您有效,请标记为正确。:-)