我有一个功能可以很好地单独包含在控制器中,以修改 $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) {....}