我有以下控制器:
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对象):
ngjoola.factory('socket', function ($rootScope) {
var socket = joolaio.io.socket;
return {
on: function (eventName, callback) {
socket.on(eventName, function () {
var args = arguments;
$rootScope.$apply(function () {
callback.apply(socket, args);
});
});
},
emit: function (eventName, data, callback) {
socket.emit(eventName, data, function () {
var args = arguments;
$rootScope.$apply(function () {
if (callback) {
callback.apply(socket, args);
}
});
})
}
};
});
我的HTML(玉):
.box-content(ng-controller="dsCtrl")
| {{list}}
列表没有显示。
两个问题:
{{list}}
没有显示?答案 0 :(得分:0)
这是一个回调问题,我将我的代码更新为以下内容,现在可以使用了:
控制器:
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);
})
});
};
});