Как значения obj, возвращаемые на заводе, могут обращаться к Локальным переменным или функциям. Предположим, я хочу инкапсулировать мою модель как локальную переменную или функцию на фабрику или службу, но я хочу вернуть их как значения возвращаемого объекта. Но когда я делаю это, я получаю ошибку, говоря, что переменная не определена. Может ли кто-нибудь помочь мне в этой проблеме.
app.factory('myFactory',function(){
var listofFriends=["john","ajay",.....];
var addFriend=function(name){
if(name!==""){
listofFriends.push(name);
};
return listofFriends;};
return{Friends:listofFriends,addfriend:addFriend(name)}
});
дает ошибку
Вот как я это сделаю. Это простой пример того, как перечислить и добавить друзей. См. Его на codepen
<script src="https://code.angularjs.org/1.4.9/angular.min.js"></script>
<div ng-app="myApp" ng-controller="MyController">
my friends: {{friends}} <br>
<input ng-model="newFriendName" type="text" />
<button ng-click="addNewFriend(newFriendName)">Add</button>
</div>
<script>
var app = angular.module('myApp', []);
app.factory("myService", function(){
var serviceObject = {};
var listOfFriends = ["john","ajay","amy"];
serviceObject.getFriends = function(){ return listOfFriends; }
serviceObject.addFriend = function(name){ if (name) listOfFriends.push(name) };
return serviceObject;
});
app.controller("MyController", ["$scope", "myService", function($scope, myService){
$scope.friends = myService.getFriends();
$scope.newFriendName = "";
$scope.addNewFriend = function(name){
myService.addFriend(name);
$scope.friends = myService.getFriends();
}
}]);
</script>