1

我有一個非常簡單的AngularJS應用程序,我試圖顯示一個記錄列表。AngularJS ng-repeat不工作

我主要的index.html代碼是:

<div id="employeeApp" ng-app='employeeApp' ng-controller='EmployeeController'> 
    <div ng-view=""></div> 
</div> 

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular-route.js"></script> 
<script src="js/controller.js"></script>  

的list.html局部視圖看起來像:

div id="listView"> 
<ul> 
    <li name="DataContainer" ng-repeat='employee in employees'> 
     <table> 
      <tr><td> 
       <img ng-src='{{employee.image}}'></img> 
      </td></tr> 
      <tr><td align="center"> 
       <span name="Name" class="outputData"> 
        <a href="#" ng-click="getEmployeeDetail(employee.id)"><div>{{employee.name}}</div><div>{{employee.title}}</div></a> 
       </span> 
      </td></tr> 
     </table> 
    </li> 
</ul> 

的controller.js代碼如下所示:

var app = angular.module('employeeApp', ['ngRoute']); 
app.service('EmployeeService', ['$http', function ($http){ 

this.getEmployees = function() 
{ 
    return $http.get(baseURL); 
}; 

this.getEmployee = function (id) 
{ 
    return $http.get(baseURL + '/' + id); 
};}]); 

app.config(['$routeProvider', function($routeProvider){ $routeProvider 
    .when('/employees', { 
     templateUrl: 'partials/list.html' 
    }) 
.when('/employees/:employeeId', { 
     templateUrl: 'partials/edit.html' 
}) 
.otherwise({ // default 
     redirectTo: '/employees' 
});}]); 

app.controller('EmployeeController', ['$scope', 'EmployeeService', function ($scope, EmployeeService) { 
$scope.employees = EmployeeService.getEmployees(); 
console.log($scope.employees); 

$scope.getEmployeeDetail = function (id) 
{ 
    $scope.employeeDetail = EmployeeService.getEmployee(id); 
    console.log($scope.employeeDetail); 
}}]); 

我的REST服務返回我可以在瀏覽器控制檯中看到的數據,但是我的列表不在頁面中呈現。

路由似乎工作正常,因爲我可以看到list.html獲取加載。但由於某種原因,該列表顯示2個空記錄。

我想知道我有一些基本的錯誤,無論是在我的HTML或控制器打破代碼。

+0

嘗試在路由配置。當('/員工設置控制器, {module1:'partials/list.html',控制器:'EmployeeController' }) – uowzd01

+0

console.log($ scope.employees)的輸出是什麼?看起來像? – velotron

+0

除此之外,這並沒有幫助它導致兩次調用控制器而不是一次。 json的輸出如下:[{「location」:「x」,「email」:「someEmail」,「image」:「1.jpg」,「name」:「John」,「title」:「Director」, 「電話」:「1234」,「ID」:「0」},........] – Andy

回答

1

你控制器調用服務有點覺得奇怪,我,因爲EmployeeService回報$http.get(baseURL),我會控制代碼改成這樣:

app.controller('EmployeeController', ['$scope', 'EmployeeService', function ($scope, EmployeeService) { 
EmployeeService.getEmployees().success(function(data){ 
$scope.employees = data; 
console.log($scope.employees); 
}); 
+0

那麼這並沒有解決這個問題,我期望如此。 console.log($ scope.employees)在瀏覽器日誌中顯示正確的數據。但由於某種原因,該觀點並未找到它。我的猜測是控制器中的視圖或基本錯誤是錯誤的。 – Andy

+0

這很奇怪,我基本上覆制你的代碼,我可以看到列表綁定罰款$ scope.employees。我建議你從簡單的東西開始,只是本地兩個字符串的數組[[value1],「value2」],檢查list.html是否可以綁定? – uowzd01