我已经有一个功能,可以单独使用控制器来修改$ scope的数据但是当我尝试将它添加到带注入工厂的范围时......它无法运行。同一工厂返回的其他数据返回正常。
这是原始功能:
$scope.sortByRooms = function () {
var amount = 0;
for (var i = 0; i < $scope.customers.length; i++) {
amount += $scope.customers[i].area * $scope.customers[i].price;
}
if (amount < 100 && amount > 0) {
$scope.alertBadPrice = true;
$scope.contact.totalQuote = amount;
return amount;
} else {
$scope.contact.totalQuote = amount;
$scope.alertBadPrice = false;
return amount;
}
};
然而,作为这样的工厂对象返回......
app.controller('blahblah', [$scope, factoryObject, function($scope, factoryObject) {
$scope.customers = factoryObject.list();
$scope.sortByRooms = factoryObject.sortByRooms();
无效。其他返回的数据对象,如客户工作正常,但不是我的功能。
我应该这样返回我的功能吗?
sortByRooms = function (obj, obj1, obj3) {
var amount = 0;
for (var i = 0; i < obj.length; i++) {
amount += obj[i].area * obj[i].price;
}
if (amount < 100 && amount > 0) {
obj1 = true;
obj3.totalQuote = amount;
return amount;
} else {
obj1 = false;
obj3.totalQuote = amount;
return amount;
}
};
或者我应该保持原始功能相同,但是将范围注入工厂对象,如下所示:
gapp.factory('factoryObj',[ $scope, function ($scope) {....}
答案 0 :(得分:0)
工厂不应该使用$scope
。看起来你真的需要将你的工作分成更小的功能。第一个看起来像一个效用函数,它根据客户信息计算总数:
totalAmount = function(customers){
var amount = 0;
for (var i=0; i<customers.length; i++){
amount += customers[i].area * customers[i].price;
}
return amount;
};
然后你应该有其他功能来决定如何处理这个数额。另外,为什么在没有排序的情况下命名函数sortByRooms
?