2015-09-28 56 views
0

我有三個文件 - app.js,controllers.js,services.js。如果我有辦法工作,還有其他一些我想添加的。我看到代碼進入mainApp的angular.module部分,然後是服務和控制器。然而,沒有錯誤發生,沒有數據回來,並且控制器方法根本不被調用(只有控制器從它的外觀初始化)。我嘗試使用init()強制進行一個調用,但沒有運氣。我究竟做錯了什麼?控制器沒有加載JSON文件Angular

這裏是app.js

var mainApp = angular.module('MainApp', ['test.services', 'test.controllers']); 

Controllers.js

var app = angular.module('test.controllers', []); 
app.controller('TestCtrl', [$scope, 'TestService', function($scope, TestService) 

    var promise = TestService.makeHttpRequest(../../src/testFile.json); 

    promise.then(function(data){    
     $scope.results = data; 
     console.log($scope.results); 
    }); 
}]); 

不工作。下面的方法也沒有得到任何數據。

var app = angular.module('test.controllers', []); 
app.controller('TestCtrl', [$scope, $http, function($scope, $http){ 
    $http.get('../../src/testFile.json').then(function(data) { 
     $scope.results = data.data; 
     console.log(data); 
    }); 
}]); 

services.js

var appServices = angular.module('test.services', []); 

//Does the same thing, but get call moved to services 

的Index.html

<body class="bg-blue mainContainer" ng-app="MainApp"> 
     <div id="content-container" ng-contoller="TestCtrl" class="container main-container">{{results}}</div> 
    <div id="content-container" ng-contoller="MainController" class="container main-container" ng-init="loadResults()"> 
    </body> 
+0

刪除依賴項test.services和test.controllers,這是不需要的,使那[] –

回答

0

testFile.json需要可通過HTTP服務器爲它形成的響應。

此外,您並沒有正確調用您的控制器。

這是給你的HTML一個粗略的例子:

<body class="bg-blue mainContainer" ng-app="MainApp"> 
    <div ng-controller="TestCtrl"> 
    </div> 
</body> 

,然後格式化你的JavaScript像這樣:

var mainApp = angular.module('MainApp', ['test.controllers']); 

var app = angular.module('test.controllers', []); 

app.controller('TestCtrl', function() { 
    console.info('TestCtrl'); 
}); 
+0

我正在使用node.js並通過命令提示符打開一個http-server。 Index.html是代碼存在的地方,所有JS/CSS都可以正常加載。如何檢查testFile.json是否可用於服務器?如果我嘗試localhost/src/json/testFile.json,我會看到JSON正常。 –

+0

最簡單的方法是找到文件的絕對位置。你的src目錄是公共目錄嗎? – Rish

+0

好吧我嘗試使用物理位置和llocalhost:8080/src /路徑獲取請求中的文件。兩者都不起作用。問題是控制器方法根本沒有被調用。我根本沒有得到實際的http.get調用。 –

1

難道這是你的問題?

ng-contoller="MainController" 

注意在單詞控制器 編輯失蹤R: 順便說一句,您的兩個控制器功能似乎挺合我意。 我唯一不同的地方是將數組中的字符串命名爲['$ http',函數($ http){}]

相關問題