2014-01-10 4 views
0

Я пытаюсь отобразить данные с контроллера Odata Web Api с помощью JayData и Angular. Мне удалось выйти на сцену, где данные возвращаются в Firebug, но я не могу получить данные в своем контроллере или в представлении.Первый запрос JayData с Angular and Odata

Вот мой app.js:

var app = angular.module("app", ["localization", "ngResource", "ngRoute", "jaydata"]). 
    config(function ($routeProvider, $locationProvider) { 
     $routeProvider. 
      when('/Admin/Stages/List', { templateUrl: '/Content/Templates/Stages.html' }). 
      otherwise({ redirectTo: 'Admin/Teams/List', templateUrl: '/Content/Templates/Teams.html' }); 
     $locationProvider.html5Mode(true); //will use html5 mode rather than hashbang where available 
    }); 

var StageListController = function ($scope, $data) { 

    $scope.stages = []; 

    $data.initService('http://lj.cloudapp.net/odata') 
    .then(function (lj) { 
     $scope.lj = lj; 
     $scope.stages = lj.Stages.toLiveArray(); 
    }); 
}; 

Это мой шаблон:

<table class="table table-striped table-condensed table-hover"> 
<thead> 
    <th> 
     Stage Id 
    </th> 
    <th> 
     Stage Name 
    </th> 
</thead> 
<tbody> 
    <tr ng-repeat="stage in stages | filter:search:StageName | orderBy:'StageId'" id="stage_{{stage.id}}"> 
     <td>{{stage.StageId}}</td> 
     <td>{{stage.StageName}}</td> 
    </tr> 
</tbody> 

И это мое мнение:

<div data-ng-app="app"> 
    <div class="container" ng-controller="StageListController"> 
      <div ng-view></div> 
     </div> 
    </div> 

@Styles.Render("~/Content/css") 
@Scripts.Render("~/bundles/modernizr") 
@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/bootstrap") 
<script src="@Url.Content("~/Scripts/datajs-1.1.1.min.js")"></script> 
<script src="@Url.Content("~/Scripts/angular.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/angular-resource.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/angular-route.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/localize.js")" type="text/javascript"></script> 
<script src="http://include.jaydata.org/jaydata.js"></script> 
<script src="http://include.jaydata.org/jaydatamodules/angular.js"></script> 
<script src="@Url.Content("~/Scripts/angular/app.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/angular/lj.js")" type="text/javascript"></script> 

Кодовые достигает . то в Контроллере, но ничего не заполняется в $ scope.stages. Любая помощь могла бы быть полезна.

РЕДАКТИРОВАТЬ:

Я изменил выше следующее: ошибки входа

var StageListController = function ($scope, $data) { 

$scope.stages = []; 

$data.initService('http://lj.cloudapp.net/odata') 
.then(function (context) { 
    alert(context); 
    $scope.context = context; 
    $scope.stages = context.Stages.toArray().then(function (stage) { 
     console.log("stage[10] is:"); 
     console.log(stage[10]); 
     stage.forEach(function (p) { 
      console.log(stage.StageName); 
     }); 
    }) 

     .fail(function (r) { 
      console.log(r); 
     }); 
}); 

};

EDIT 2:

Переключение с datajs 1.1.1 1.0.3, кажется, решить эту проблему

+0

Что такое ваш вопрос? –

+0

Почему $ scope.stages не заполняется? Могу ли я изменить код, чтобы получить доступ к данным, возвращаемым контроллером Odata? – user517406

+0

Вы можете посмотреть сайт обзора кода, если вы ищете обзор кода. Если есть конкретная проблема или ошибка, вы можете получить дополнительную помощь здесь. –

ответ

0

Переключение с datajs 1.1.1 1.0.3, кажется, решить эту проблему

Смежные вопросы