2016-03-22 10 views
0

ファクトリで返される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)} 
    }); 

は、これは私がそれを行うだろうかあるエラー

答えて

0

になります。これは、友達を追加して追加する方法の簡単な例です。 See it on 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> 
関連する問題