Javascript 角度:将控制器更改为工厂
使用下面的代码,我无法将对象返回到工厂中的返回值,并且随后在html中有空白字段,并且有角度错误 提供程序“theService”必须从$get factory方法返回一个值 我正在使用TingoDB(Mongo的javascript版本)和Angular开发一个单页应用程序,用于节点Webkit中的数据绑定 我可以从控制器中查询数据库,以显示、过滤网页的数据等,但希望将此代码更改为角度工厂,以便我可以跨多个控制器进行同步。 虽然我能够使用虚拟数据从工厂返回数据到控制器,但我无法从数据库返回“实时”数据 以下代码用作控制器:Javascript 角度:将控制器更改为工厂,javascript,angularjs,mongodb,Javascript,Angularjs,Mongodb,使用下面的代码,我无法将对象返回到工厂中的返回值,并且随后在html中有空白字段,并且有角度错误 提供程序“theService”必须从$get factory方法返回一个值 我正在使用TingoDB(Mongo的javascript版本)和Angular开发一个单页应用程序,用于节点Webkit中的数据绑定 我可以从控制器中查询数据库,以显示、过滤网页的数据等,但希望将此代码更改为角度工厂,以便我可以跨多个控制器进行同步。 虽然我能够使用虚拟数据从工厂返回数据到控制器,但我无法从数据库返回“实
app.controller('MyCtrl', ['$scope', function($scope) {
function getData(callback) {
collection.find( {} ).toArray(function(err, docs) {
$scope.$apply(function () {
callback(docs);
});
});
}
function info(b) {
// console.log(b);
$scope.items = b;
}
getData(info);
}]);
app.controller("MyCtrl", function($scope, theService) {
$scope.users = theService.all();
});
将此更改为工厂不起作用:
app.factory("theService", function($scope) {
function getData(callback) {
collection.find( {} )).toArray(function(err, docs) {
$scope.$apply(function () {
callback(docs);
});
});
}
function info(b) {
// console.log(b);
$scope.users = b;
return {
all: $scope.users,
first: $scope.users[0]
}
}
getData(info);
});
控制员:
app.controller('MyCtrl', ['$scope', function($scope) {
function getData(callback) {
collection.find( {} ).toArray(function(err, docs) {
$scope.$apply(function () {
callback(docs);
});
});
}
function info(b) {
// console.log(b);
$scope.items = b;
}
getData(info);
}]);
app.controller("MyCtrl", function($scope, theService) {
$scope.users = theService.all();
});
在这里,控制器不知道在哪里定义
集合
变量,但最好将值传递给工厂
app.controller('MyCtrl', ['$scope','getData', function ($scope, getData) {
$scope.items = [];
getData(collection).then(function(items) { // pass "collection" to the factory
$scope.items = items;
});
}]);
最好将工厂用作全局
函数(或类构造函数)
你需要比工厂必须返回的“不工作”更具描述性something@user3801428能不能请你创作一首普朗克或小提琴,有很多未知变量使代码看起来很混乱。代码从本地数据库中提取数据并在节点webkit中运行,因此我认为不可能使plunk或fiddle保持其完整性。