[英]How to correctly reuse AngularJS services and controllers based on variables input?
[英]How to reuse a controller in angularjs with different variables based on route
我需要加载Web服务。 我喜欢显示,排序和过滤表格的角度方式,并且我制作的内容效果很好。 现在,我尝试扩展它:基于所选的链接,我想以相同的方式显示来自同一Web服务的不同数据。 我试图不重复代码,所以我试图重用控制器,现在我很困惑。 这意味着我要
解决到目前为止我认为在配置中进行更多更改的最佳方法是什么? 我首先路由到一个变量( when('/change-requests/:businessUnit'
),然后使用该变量加载不同的值。但是,如何更改模板的url呢;另一方面,如果我只是添加路由并加载不同的URL模板(重用控制器),如何在ajax调用中加载不同的url?我对Angular不太熟悉,所以也许我在错误的树上咆哮...
这是我原始代码的相关部分。 还有更多的东西,但是没有任何改变。 我在其中添加了一些内联注释,您将在其中找到要更改的部分,具体取决于所选的链接。
HTML:
<div ng-view></div>
路由器:
$routeProvider.when('/change-requests/business-solutions', {
//this template will be different
templateUrl: 'js/modules/changeRequests/partials/business-solutions.html',
controller: ChangeRequestCtrl
})
(部分)控制器:
function ChangeRequestCtrl($scope, $location) {
$scope.loaded = false;
$.ajax({
//this url will be different
url: url,
success: function(json) {
$scope.$apply(function() {
$scope.changes = json.map(function(row) {
//this array map will be different
return row;
});
$scope.loaded = true;
});
},
error: function() {
$scope.error = true;
}
});
}
如果我没有道理,我会尝试澄清。
如果要使用重用控制器名称,则应在路由中使用resolve属性,并在控制器中使用resolve属性
$routeProvider.when('/change-requests/business-solutions', {
//this template will be different
templateUrl: 'js/modules/changeRequests/partials/business-solutions.html',
controller: ChangeRequestCtrl, resolve: {
resolvedprop: ['$route', '$q', function ($route, $q) {
var apiObject = {url: 'abc.com' };
return apiObject
}],
}
})
function ChangeRequestCtrl($scope, $location,resolvedprop) {
url = resolvedprop.url ;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.