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.