在AngularJS的两个$ scope中绑定数据,怎么样?

时间:2017-10-20 15:12:14

标签: javascript angularjs

我正在尝试将$ scope 1中的一些数据带到$ scope 2。 在下面,我试图将$ scope 1中的“project_data.title”或“$$ scope.project_data.project_title”传递给$ scope 2中的$ scope.test。

[$范围A]

$scope.updateData = function(project_id){
    $http.post("../crud/projects_update.php",{
        project_id : $scope.project_data.project_id,    
        project_title : $scope.project_data.project_title // this should be passed to $scope B.
    })

[$范围B]

$http.get('../crud/customers_read.php',{

}).then(function(response){
    $scope.customer = [];
    $scope.customers = response.data;
    $scope.test = { name: $scope.project_data.project_title }; // This should come from $scope A.
});

我认为它们是普遍的,但似乎不是。你通常如何解决这类问题:为不同的$ scope绑定数据?

提前谢谢!

1 个答案:

答案 0 :(得分:6)

Angular中的作用域默认情况下可以将向上梯形图引用到父作用域,除非您将它们隔离。您的两个范围(如果是兄弟姐妹)似乎不会默认继承彼此的范围。

例如:

scope A -> scope B:范围B可以引用范围A变量

scope C <- scope A -> scope B:范围B和范围C可以引用范围A变量,但范围B不能引用范围C变量,反之亦然

你可以使用$rootScope,但是当你的应用程序扩展时,这将使你陷入凌乱的范围汤状态处理。

我建议你改为将数据放在服务中。

因此,范围A会将数据发布到CommonDataSvc,然后范围B可以在那里引用数据。

这将使您的州更好地组织起来。

另一种选择是实施Redux。