0

您好,我是 Angular JS 的初学者,现在我陷入了困境。我做了两个模块

菜单画布

现在我在Menu模块的工厂方法中声明了一个对象,以使其可从Canvas模块中使用。

我的代码如下;

var Menu=angular.module("menu",[]);

Menu.factory("Data",['$rootScope', function($rootScope){

    var obj={};
    obj.server="http://localhost:8080";
    obj.transformations=null;
    obj.actions=null;
    obj.sources=null;
    obj.typeSelected=null;

    obj.save = function(data) {
         $rootScope.$broadcast('data:updated',data);
       }

    return obj;
}]);

现在我有一个控制器来更新obj的属性值。

Menu.controller("menuClick",function($scope,Data){

    $scope.obj=Data;

    $scope.clickOnMenu=function(type)
    {
        if(type.indexOf("Source")!=-1)$scope.obj.typeSelected="source";
        else if(type.indexOf("Transformation")!=-1)$scope.obj.typeSelected="transformation";
        else if(type.indexOf("Action")!=-1)$scope.obj.typeSelected="action";

        console.log($scope.obj);

        //added bootstrap here
        angular.bootstrap(document.getElementById("canvascontainer"), ['canvas']);
    }
})

现在,当我创建Canvas模块时,我正在添加Menu模块的依赖项

var Canvas=angular.module('canvas',['menu']);

Canvas.controller("canvasOperation",["Data",'$scope',function(Data,$scope){

    $scope.obj=Data;

    $scope.clickCanvas=function()
    {
        console.log($scope.obj)
        if($scope.obj.typeSelected!=null)
        {
         console.log("fun started");
        }
    }
}])
 //removed it from here
//angular.bootstrap(document.getElementById("canvascontainer"), ['canvas']);

现在的问题是,即使在我从Menu模块的clickOnMenu方法更新typeSelected值之后, typeSelected的值在Canvas模块和Canvas模块中也没有更新;

console.log($scope.obj.typeSelected)

给出输出null

我试图解释每一个细节。你能告诉我我在哪里做错了吗?

4

0 回答 0