Angular js点击事件

时间:2015-02-10 07:48:53

标签: javascript angularjs

我正在使用Angularjs。我想通过单击(Homecontroller)中的链接导航到其他控制器(detailscontroller)和detail.html页面。但是在导航到detailscontroller时,我应该从Homecontroller传递参数值。以下是我的截图

enter image description here

通过单击删除,它应导航到detailscontroller控制器并触发以下功能

detailsController

myApp.controller("detailsController", function ($scope, $http,GENERAL_CONFIG,$filter) {

    $scope.getdetailsbyspider = function(spider){
        console.log(spider)

    }


});

spider应该来自Homecontroller(点击值)

我该怎么做?谁能帮我 ?

更新:我的路由器

.when("/details", { templateUrl: 'Details.html', controller: 'detailsController' }) 

Home.html

<tbody>
               <tr ng-repeat="row in finished">
                   <td> {{row.project}} </td>
                <td> <a href="#details" ng-click="getdetailsbyspider(row)"> {{row.spider}}</a></td>

获取上表

更新 当我单击Spider名称页面时,应该导航到details.html,并点击蜘蛛名称。

在此示例中,当我单击删除时,它应导航到details.html并在详细控制器中执行getdetailsbyspider函数,其中蜘蛛名称为delete

谢谢,

2 个答案:

答案 0 :(得分:1)

我会像dddd1919那样说并将参数spide添加到url 在家庭控制器:

       myApp.controller("HomeController", function ($scope, $http,GENERAL_CONFIG,$filter) {
         $scope.callGetDetail = function(spider){
            console.log("callGetDetail");
            $location.path("/YourDomaine/#/details/getdetailsbyspider="+spider);
        }
     });

在您要拨打电话的视图中,home.html

          <tbody>
           <tr ng-repeat="row in finished">
               <td> {{row.project}} </td>
            <td> <a href="#details" ng-click="callGetDetail(row)"> 
             {{row.spider}}</a>
            </td>
路由器中的

    when('/details/:params', {
        templateUrl: 'Details.html',
        controller: 'detailsController'
     }).
在detailsController中

     myApp.controller("detailsController", function ($scope, $http, GENERAL_CONFIG, $filter,$routeParams) {
        $scope.getdetailsbyspider = function(spider){
            console.log("getdetailsbyspider "+ spider)
        }

        function myUrlToArray(url) {
           var paramsFormatted = {};
           var paramstmp = decodeURI(url).split("&");
           for (var index = 0; index < paramstmp.length; ++index) {
              var tmp = paramstmp[index].split("=");
              paramsFormatted[ tmp[0] ] = tmp[1];
           }
           return paramsFormatted;
        }
       var params =  myUrlToArray($routeParams.params)
       if(params.getdetailsbyspider != null ){
                  $scope.getdetailsbyspider(params.getdetailsbyspider);
        }
    });

答案 1 :(得分:0)

根据您的评论

  

重定向工作正常。但getdetailsbyspider不是   能够访问。我希望在控制器级别获得问题

问题在于控制器功能

$scope.getdetailsbyspider = function(spider){
    console.log(spider)
}
当您触发它时,

不是您当前所在控制器的一部分。这意味着您可以通过点击home.html中的链接来调用此功能,但detailsController未分配给该视图。

要证明只需将函数复制到HomeController(或其名称),您就会看到日志记录有效。