Angularjs |点击时将数据传递给2个不同的控制器

时间:2014-10-07 17:23:45

标签: javascript angularjs

我通过ng-repeat在div中显示了一些项目。 每个div都包含一个带有项目ID的链接。

基本上我想在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,工作正常,一切都很好。全部

1 个答案:

答案 0 :(得分: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>

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