Javascript AngularJS数据库更改侦听器
我在网上学习了一些关于待办事项列表的教程。。。但我认为,这些教程并没有使用最佳实践来实现。所有代码都在控制器中。 我的控制器看起来像这样,我认为变更监听器的代码不在最佳“位置”。我应该在哪里实现侦听器Javascript AngularJS数据库更改侦听器,javascript,angularjs,ionic-framework,pouchdb,Javascript,Angularjs,Ionic Framework,Pouchdb,我在网上学习了一些关于待办事项列表的教程。。。但我认为,这些教程并没有使用最佳实践来实现。所有代码都在控制器中。 我的控制器看起来像这样,我认为变更监听器的代码不在最佳“位置”。我应该在哪里实现侦听器 .controller('TodosCtrl', ['$scope', '$state', 'Todo', function($scope, $state, Todo) { $scope.create = function() { $state.go('todo_create'); };
.controller('TodosCtrl', ['$scope', '$state', 'Todo', function($scope, $state, Todo) {
$scope.create = function() { $state.go('todo_create'); };
$scope.todos= [];
$scope.$on('$ionicView.loaded', function() {
localDB.changes({
since: 'now',
live: true,
include_docs: true
}).on('change', function (change) {
if (change.doc && change.doc._id.substring(0, change.doc._id.indexOf('_')) === 'todo') {
if (change.deleted) {
....
} else {
....
}
}
});
});
Todo.all().then(function (result) {
for (var i = 0; i < result.length; i++) {
$scope.todos.push(result[i].doc);
}
});
}])
.controller('TodosCtrl',['$scope','$state','Todo',函数($scope,$state,Todo){
$scope.create=function(){$state.go('todo_create');};
$scope.todos=[];
$scope.$on('$ionicView.loaded',函数(){
localDB.changes({
因为:"现在",,
现场直播:没错,
包含文档:true
}).on('change',函数(change){
if(change.doc&&change.doc.\u-id.子字符串(0,change.doc.\u-id.indexOf(“”))=='todo'){
如果(更改。删除){
....
}否则{
....
}
}
});
});
Todo.all().then(函数(结果){
对于(变量i=0;i
从概念上讲,耦合到DOM的所有相关代码都应该在控制器中。所有其他逻辑都应插入到服务中 有关exmaple的详细信息,请参见我的评论:
.controller('TodosCtrl', ['$scope', '$state', 'Todo', function($scope, $state, Todo) {
$scope.create = function() { $state.go('todo_create'); };
$scope.todos= [];
$scope.$on('$ionicView.loaded', function() {
localDB
/** Not sure exactly what it is but if that some sort of initialization - this is better to be placed in one of the services
.changes
({
since: 'now',
live: true,
include_docs: true
})
*/
.on('change', function (change) {
if (change.doc && change.doc._id.substring(0, change.doc._id.indexOf('_')) === 'todo') {
if (change.deleted) {
....
} else {
....
}
}
});
});
Todo.all().then(function (result) {
for (var i = 0; i < result.length; i++) {
$scope.todos.push(result[i].doc);
}
});
}]) ;
.controller('TodosCtrl',['$scope','$state','Todo',函数($scope,$state,Todo){
$scope.create=function(){$state.go('todo_create');};
$scope.todos=[];
$scope.$on('$ionicView.loaded',函数(){
本地数据库
/**不确定它到底是什么,但如果是某种形式的初始化,则最好将其放在其中一个服务中
.变化
({
因为:"现在",,
现场直播:没错,
包含文档:true
})
*/
.on('change',函数(change){
if(change.doc&&change.doc.\u-id.子字符串(0,change.doc.\u-id.indexOf(“”))=='todo'){
如果(更改。删除){
....
}否则{
....
}
}
});
});
Todo.all().then(函数(结果){
对于(变量i=0;i
但我在侦听器中使用$scope变量。。。因此,代码与dom相关,对吗?如果需要$scope,我如何将侦听器放入服务中?$scope是每个控制器的特定对象,不能在服务中关联。这意味着您确实不能将侦听器放在服务中。您可以在监听器中放置的是我在代码中提到的初始化(以及其他不依赖DOM的东西)