AngularJS视图在控制器';在';解雇
我有以下控制器:AngularJS视图在控制器';在';解雇,angularjs,Angularjs,我有以下控制器: joolaControllers.controller('dsCtrl', function ($scope, dsService, socket) { dsService.getList(); socket.on('datasources/list:done', function (list) { $scope.list = list.datasources; }); }); 及以下服务: var joolaServices = angular.mo
joolaControllers.controller('dsCtrl', function ($scope, dsService, socket) {
dsService.getList();
socket.on('datasources/list:done', function (list) {
$scope.list = list.datasources;
});
});
及以下服务:
var joolaServices = angular.module('ngjoola.services', ['ngjoola']);
joolaServices.service('dsService', function (socket) {
this.getList = function () {
return joolaio.objects.datasources.list();
};
});
socket
的定义如下(joolaio.io.socket是socket.io对象):
我的HTML(翡翠):
名单没有显示出来
两个问题:
{{list}}
没有显示这是一个回调问题,我将代码更新为以下内容,现在可以正常工作了: 控制器:
joolaControllers.controller('dsCtrl', function ($scope, dsService) {
dsService.getList(function(list) {
$scope.list = list;
});
});
服务:
joolaServices.service('dsService', function (socket) {
this.getList = function (callback) {
joolaio.objects.datasources.list(function() {
socket.on('datasources/list:done', function(list) {
callback(list.datasources);
})
});
};
});
插座是什么样子的?我猜您正在处理的服务存在内部/外部问题,在某些情况下,
$apply
是必要的,而在其他情况下则不是。如果看不到套接字
代码,就无法确定。此外,您肯定不想在控制器中侦听套接字响应。您需要将代码的结构设置为更像$scope.list=dsService.getList()代码>或使用承诺:`dsService.getList().then(函数(list){$scope.list=list;})@BrianGenisio我在问题中添加了套接字代码。我尝试包装这行$scope.list=list.datasources使用$apply
执行code>,但收到一条错误消息,说明$apply已在进行中。。
joolaControllers.controller('dsCtrl', function ($scope, dsService) {
dsService.getList(function(list) {
$scope.list = list;
});
});
joolaServices.service('dsService', function (socket) {
this.getList = function (callback) {
joolaio.objects.datasources.list(function() {
socket.on('datasources/list:done', function(list) {
callback(list.datasources);
})
});
};
});