gpt4 book ai didi

angularjs - 我什么时候应该在 AngularJS 中使用不同的 Controller

转载 作者:行者123 更新时间:2023-12-02 09:21:55 26 4
gpt4 key购买 nike

我正在尝试在 AngularJS 中创建搜索功能。这是我的 Controller 代码:

app.controller('SearchController',['$scope', '$window','SearchService',  '$cookies' ,'$location','$routeParams',
function($scope,$window, SearchService, $cookies, $location, $routeParams) {
$scope.homePageSearch = function(search) {
$scope.result = '';
$scope.count = '';
SearchService.setSearchData(search);
$window.location.href = '/search/';
}
$scope.jobDetail = function(){
var slug = $location.absUrl().split('/')[4];
SearchService.getJobDetail(slug).then(function(data){
console.log(data)
});
}
var url = $location.absUrl().split('/')[3];
if(url == 'jobdetail'){
$scope.jobDetail();
}
});
}]);

我在页面加载时调用 homePageSearch 函数。之后,我将页面重定向到/jobDetail/并调用函数 jobDetail。但问题是在 jobDetail 页面上也调用了 homePageSearch() 函数如何避免在 jobDetail 页面上调用 homePageSearch() 函数。

我应该为/jobDetail/页面使用不同的 Controller 吗?

我是 angularJs 的新手,请建议我实现此目标的正确方法。

最佳答案

我没有足够的声誉,因为我是堆栈溢出的新手,所以我现在发布答案。

从您的评论中可以看出您有两个不同的页面。因此,您绝对应该有两个不同的 Controller ,每个 Controller 一个。您可以使用路由器轻松指定。我更喜欢使用 ui-router 而不是 ng-router。

创建一个 router.js 文件,如下所示。您可以像这样为每个页面指定 Controller :

$stateProvider
.state('login', {
url: '/',
templateUrl: '/views/search.html',
controller: 'SearchController'
})
.state('results', {
url: '/results',
templateUrl: '/views/result.html',
controller: 'ResultController'
});

那么,您已经了解了如何使用 Controller 。更重要的是,请避免使用 $window.location.href,因为它会刷新您的页面,这意味着它将重新启动您的应用程序。

事实上,您应该使用 $state.go() (如果您使用的是 ui-router)或 $location.path() (如果您使用的是ng-路由器)

关于angularjs - 我什么时候应该在 AngularJS 中使用不同的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41955645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com