$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) {....}