我正在使用Angularjs。我想通过单击(Homecontroller)中的链接导航到其他控制器(detailscontroller)和detail.html页面。但是在导航到detailscontroller时,我应该从Homecontroller传递参数值。以下是我的截图
通过单击删除,它应导航到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
谢谢,
答案 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
(或其名称),您就会看到日志记录有效。