2015-04-15 22 views
0

我想使用离子与角度,从一个控制器将数据传递给花药, 定义我知道的最好的方式与工厂, 做,但我得到的错误:入门不是工厂

ReferenceError: setData is not defined

我的代码是

app.factory("Places", function() { 
    var Places = {}; 
    Places.setData = function(places) { 
     Places.items = places; 
    }; 
    Places.getItem = function($stateParams) { 
     return Places.item; 
    }; 

    return{ 
     setData: setData, 
     getItem:getItem 
    } 
    }) 

和CONTROLER

.controller('DetailsCtrl', function ($scope, $stateParams,Places) { 
      console.log('PlaceitemCtrl'); 
     $scope.items=Places.getItem($stateParams); 
    }); 

感谢您的帮助!

+0

你在哪里调用setData? –

+0

返回{setData:Places.setData,getItem:Places.getItem}或者返回{places:Places} –

+1

为什么你要返回一个新的对象而不是'Places'?在你的函数中没有定义变量'setData',所以你基本上返回{setData:undefiend,getItem:undefined}。考虑使用严格模式来捕获这些错误。 – Sacho

回答

4

您正在返回工厂中的新对象,并且同时没有定义当地的setDatagetItem函数。而是返回Places有附加必要方法的对象:

app.factory("Places", function() { 
    var Places = {}; 
    Places.setData = function (places) { 
     Places.items = places; 
    }; 
    Places.getItem = function ($stateParams) { 
     return Places.item; 
    }; 

    return Places; 
}); 
+0

一个问题乳清当我刷新页面我没有得到这个价值? –

+1

因为您刷新了页面,并且应用程序被重新初始化了所有的服务/控制器/所有创建的重新创建。如果你需要一些持久性,你需要使用localStorage。 – dfsq

+0

正确! Thnx,你认为如果它的android应用程序或iPhone应用程序可以在页面上刷新?我不认为它可能与使用离子 –