2014-10-07 83 views
1

我已经通过ng-repeat在div中显示了一些项目。 每个div都包含一个带有项目ID的链接。Angular JS |将数据传递给2个不同的控制器点击

基本上我想在ng-click上绑定我的项目ID以更新工厂。这将允许我与另一个将仅加载项目详细信息数据的控制器共享点击的项目ID。

这里是我的项目查看:

<div ng-repeat="detail in projects.details"> 
    <a ng-href="#!/project/project-details" ng-click="setId(detail.project_id)"><span></span></a> 
</div> 

这里是我厂:

app.factory('getGoodIdProjectDetails', function(){ 
    var savedId = 1; //Default à 1 
    return { 
    getId : function() { 
     return savedId; 
    }, 
    setId:function(idGet){ 
     savedId = idGet; 
     return savedId; 
    } 
}  
}); 

这里是我的控制器:

function ProjectCtrl($scope, $http, $timeout, getGoodIdProjectDetails) { 
    $scope.setId = function (idGet) { 
     $scope.idProjectDetails = getGoodIdProjectDetails.setId(idGet); 
    }; 
} 

function ProjectDetailsCtrl($scope, $http, $timeout, getGoodIdProjectDetails) { 
    $scope.idProjectDetails = getGoodIdProjectDetails.getId(); 
} 

在我看来控制台显示错误就像我无法绑定ng-click这样,但是当我检查视图时,它将我排序的好东西,如ng-click="setId(8)"

我希望工厂在点击时使用良好的ID进行更新。然后,我想在projectDetailsCtrl中访问此ID以加载该项目。

||编辑|| :我改变了ng-click,工作正常,一切都很好。 THX所有

+0

这是使用基于状态的路由系统,像一个完美的情况下,角度ui路由器。在这种情况下,你的id只是一个stateParam或(取决于你的后端),你的url路径的一部分。 – mccainz 2014-10-07 17:33:33

回答

3

试试这个:

<div ng-repeat="detail in projects.details"> 
    <a ng-href="#!/project/project-details" ng-click="setId(detail.project_id)"><span>Voir le projet ></span></a> 
</div> 

你不需要使用绑定表达式{{}}将值传递给函数

相关问题