Add a console.log($scope) to you success handler.  If it isn't the value 
you expect then it's a js scoping issue.  You can get around it by saving 
your $scope to a local var via
var me = $scope;

Then in your success handler use 
me.Todos = todos;

If this doesn't get it I would build a simple plunker to demo your problem.

Gordon

On Friday, June 20, 2014 10:07:14 PM UTC-5, RahmanM wrote:
>
> Hi guys,
>
> I have the following function in my controller:
>
> this.getTodos = function () {
>     TodoService.getTodos().then(function (todos) {
>         $scope.Todos = todos;
>       },
>         function (error) {
>             // TODO: display the error pop up
>             console.log(error);
>         });};
>
> The following jasmine tests work fine:
>
>         it("Reading todos...", inject(function ($q) {
>
>             var deferredRead = $q.defer();
>             spyOn(todoServiceMock, 
> "getTodos").and.returnValue(deferredRead.promise);
>             deferredRead.resolve([{ TodoId: 10, Description: "Test", 
> Completed: false },
>             { TodoId: 11, Description: "Test", Completed: false }]);
>             todoController.getTodos();
>             scope.$apply();
>
>             expect(scope.Todos.length).toBe(2);
>         }));
>         
>         it("Reading todos, error...", inject(function ($q) {
>
>             var deferredRead = $q.defer();
>             spyOn(todoServiceMock, 
> "getTodos").and.returnValue(deferredRead.promise);
>             deferredRead.reject("There are no todos available!");
>             todoController.getTodos();
>             scope.$apply();
>
>             expect(scope.Todos.length).toBe([]);
>         }));
>
>
> However, the view does not populate the rows ... 
>
> The view has code like:
>
> <tr class="animate" ng-repeat="Todo in Todos() | orderBy:'TodoId' | 
> filter: filterTodo">
>                         <td class="col-sm-1">{{Todo.TodoId}}</td>
>                         <td class="col-sm-3">{{Todo.Description}}</td>
>                         <td class="col-sm-1">
>                             <span class="glyphicon glyphicon-check" 
> ng-show="{{Todo.Completed}}==true"></span>
>                             <span class="glyphicon glyphicon-unchecked" 
> ng-show="{{Todo.Completed}}==false"></span>
>                         </td>
>                         <td class="col-sm-2">
>                             <a href="" ng-click="selectTodo(Todo)"><span 
> class="glyphicon glyphicon-edit"></span></a>
>                         </td>
>                     </tr>
>
> There is no error message ...
>
> Any suggestions please?
>
> many thanks
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to