2015-12-08 86 views
0

我有一個控制器「ListController」,它需要填充服務器端數據。工廠不被控制器識別

app.controller("ListController", function(){ 
    var bar = this; 
    bar.venues = MyFactory.load(); 
} 

,我想從服務器獲取JSON數組,所以我想建立一個工廠利用「$ HTTP」這樣:

app.factory("MyFactory", ["$https", function($https){ 
    var myService = {}; 
    myService.load = function(){ 
    $http.get("scripts/Query.php").success(function(rows){ 
     myService.rows = rows; 
     return myService.rows; 
    }; 
    }; 
    return myService; 
}]); 

所以,我在想,MyFactory會能夠從應用程序控制器內部調用。

app是相同的變量,類型爲:angular.module(「BarMe」,[]);

我在的JavaScript得到的錯誤是:MyFactory未定義

回答

1

你沒有在你的控制器注入工廠。

嘗試這樣

app.controller("ListController", function(MyFactory){ 

} 

更在你的方法有一個回調直接分配不會給你帶來任何數據

嘗試這樣

MyFactory.load().then(function(data){ 
    bar.venues = data; 
}); 

你也必須返回$ http出廠迴應

myService.load = function(){ 
    return $http.get("scripts/Query.php").success(function(rows){ 
     return rows; 
    }; 
    }; 
+0

我有它設置myService.rows =行,然後返回基本上行。有點多餘。所以,我有'返回行'的成功,但它似乎仍然給我一個注射器錯誤MyFactory – Fallenreaper

+0

你可以提供你的完整代碼與HTML?它會更好,如果你可以提供jsfiddle –

+0

哦,我似乎得到它的工作。你的方式工作。看起來我有像你說的問題。我以爲我可能不需要「那麼」功能。謝謝! – Fallenreaper