2013-11-28 2 views
0

У меня есть следующий контроллер:

joolaControllers.controller('dsCtrl', function ($scope, dsService) { 
    dsService.getList(function (list) { 
    $scope.list = list; 
    }); 
    $scope.dsDelete = function (dsName) { 
    dsService.delete(dsName); 
    } 
}); 

И следующие услуги:

joolaServices.service('dsService', function (socket) { 
    this.getList = function (callback) { 
    joolaio.objects.datasources.list(function() { 
     socket.on('datasources/list:done', function(list) { 
     callback(list.datasources); 
     }) 
    }); 
    }; 
    this.delete = function (dsName) { 
    joolaio.objects.datasources.delete({name:dsName}, function() { 
     socket.on('datasources/delete:done', function(list) { 
     joolaio.objects.datasources.list() 
     }) 
    }); 
    }; 
}); 

Я хочу $scope.list, чтобы получить обновленные каждый раз я запустить joolaio.objects.datasources.list() но не уверен, что это правильный способ сделать это из моего понимания. Я не должен ставить слушателя внутри контроллера, это точно?

+0

Ты не можешь просто пройти обратный вызов функции удаления, как вы делаете с GetList? –

ответ

0

Вы можете использовать $watch для наблюдения за объектом, а затем обновить любой другой, если ее изменения:

$watch(watchExpression, listener, objectEquality)

Регистрирует слушателя обратного вызова будет выполняться всякий раз, когда изменения watchExpression.

Что-то вроде этого, но вы должны поставить эту joolaio.objects.datasources.list() внутри $scope: некоторым образом

scope.$watch('joolaio.objects.datasources.list()', function(newValue, oldValue) { 
     $scope.list = joolaio.objects.datasources.list(); 
}); 
Смежные вопросы