javascript - 如何在angularjs工厂方法中制作常用功能
问题描述
我正在使用 angularjs 工厂方法返回数据,并将该值传递给控制器。
) 而不是创建不同的功能需要创建一个通用功能,我想在所有控制器中返回。
) 如何在常用功能中使用重复代码。
) scope.firstCard 有 15 条记录,scope.secondCard 有 6 条记录,scope.thirdCard 有 130 条记录,scope.fourthCard 有 5 条记录。所以一切都有不同的价值。
请看我下面的工厂代码。
app.factory('commonService', ['$timeout', '$rootScope', '$state', '$window',
function($timeout, $rootScope, $state, $window) {
var renderData1 = function(scope) {
var convertedTime = scope.firstCard.forEach(function(card) {
if (card.Category == 'A') {
console.log("A");
} else if (card.Category == 'B') {
console.log("B");
} else if (card.Category == 'C') {
console.log("C");
} else if (card.Category == 'D') {
console.log("D");
} else if (card.Category == 'E') {
console.log("E");
}
});
return convertedTime;
};
var renderData2 = function(scope) {
var convertedTime = scope.secondCard.forEach(function(card) {
if (card.Category == 'A') {
console.log("A");
} else if (card.Category == 'B') {
console.log("B");
} else if (card.Category == 'C') {
console.log("C");
} else if (card.Category == 'D') {
console.log("D");
} else if (card.Category == 'E') {
console.log("E");
}
});
return convertedTime;
}
var renderData3 = function(scope) {
var convertedTime = scope.thirdCard.forEach(function(card) {
if (card.Category == 'A') {
console.log("A");
} else if (card.Category == 'B') {
console.log("B");
} else if (card.Category == 'C') {
console.log("C");
} else if (card.Category == 'D') {
console.log("D");
} else if (card.Category == 'E') {
console.log("E");
}
});
return convertedTime;
}
var renderData4 = function(scope) {
var convertedTime = scope.fourthCard.forEach(function(card) {
if (card.Category == 'A') {
console.log("A");
} else if (card.Category == 'B') {
console.log("B");
} else if (card.Category == 'C') {
console.log("C");
} else if (card.Category == 'D') {
console.log("D");
} else if (card.Category == 'E') {
console.log("E");
}
});
return convertedTime;
}
return {
renderData1: renderData1,
renderData2: renderData2,
renderData3: renderData3,
renderData4: renderData4
};
}]);
而不是这个。我想创建一个函数,我需要在多个控制器中返回它。我怎样才能做到这一点。
if (card.Category == 'A') {
console.log("A");
} else if (card.Category == 'B') {
console.log("B");
} else if (card.Category == 'C') {
console.log("C");
} else if (card.Category == 'D') {
console.log("D");
} else if (card.Category == 'E') {
console.log("E");
}
对于大多数控制器来说,这种情况很常见。那么这可以在一个地方使用它吗?
解决方案
您可以创建一个服务或工厂,您可以在所有控制器中调用它
像这个例子
app.factory('commmonService', ['$timeout', function($timeout){
return {
firstFunction: function(param1){
console.log(param1)
},
secondFunction: function(param1, param2){
}
}
}])
app.controller('myController', ['$scope', 'commmonService', function($scope, commmonService){
$scope.myMethod = function(){
commmonService.firstFunction('Hello');
}
}])
推荐阅读
- reactjs - React - 创建可重用的组件库(您可能需要适当的加载器来处理此文件类型。)
- android - 如何从位于原始目录(本机)下的媒体文件的路径读取?
- sql - SQL - 如何从联合表中搜索单行?
- javascript - 如何缩放元素保持当前元素位置
- java - Java中不正确的逻辑
- python-3.x - 无法使用 RASA 运行 actions.py 文件以创建聊天机器人
- python - Python/Q#:未找到模块错误,.qs 文件位于同一目录中
- java - Jira 弹出消息
- php - Ajax POST 与 mysqli 数据库查询
- azure-ad-graph-api - Microsoft Graph API:为具有应用程序权限的多租户应用程序获取 ErrorAccessDenied