AngularJs로 첫 번째 애플리케이션을 만들려고합니다. Tizen OS 용으로 제작하고 있으며 Jquery 모바일도 사용하고 있지만이 경우에는 별 문제가되지 않습니다.비동기 범위가있는 각도 js 컨트롤러, websql
영구 저장소로 WebSql을 선택했습니다. 각형 모듈로 멋진 래퍼를 발견했습니다 - angular-websql. 나는 간단한 앵귤러 콘트롤러의 작동 방식을 다소 알았지 만,이 모든 WebSql 항목은 비동기식이며, 실제로 상황이 실제로 복잡하게됩니다.
나는 접근법을 가지고 나왔지만, 그것이 "각도 방식"인지 확실하지 않습니다. 이 코드에서 오면
app = angular.module('foo', ["angular-websql"])
.factory('User', function ($webSql) {
db = $webSql.openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
db.createTable('users', {
// table schema
});
User = {};
User.insert = function(elem, callback) {
db.insert('expenses', elem, callback);
}
User.selectAll = function(handler, callback){
db.selectAll('expenses', function(results) {
for(var i=0; i < results.rows.length; i++) {
handler(results.rows.item(i));
}
callback();
});
}
return User;
})
.controller('BarCtrl', function ($scope, User) {
$scope.add = function() {
User.insert({
name: $scope.name,
lastname: $scope.lastname
//and so on
}, UpdateUsers)
}
function UpdateUsers() {
$scope.users = []
Foo.selectAll(function(elem) {$scope.users.push(elem)}, $scope.$apply});
}
});
, 내가 수동으로 (즉, 작업이 비동기로) 레코드가 데이터베이스에 추가되면 expense
바인딩 업데이트해야합니다. 나도 $scope.$apply
에 전화해야합니다. 그것을 피할 수있는 방법이 있습니까? 각도 약속을 사용할 수있는 방법이 있습니까? 아마도 상황이 나아질 수 있습니까? 이 코드를 개선 할 수 있다고 생각하지만 어떤 방향인지는 확실하지 않습니다. 어떤 도움을 주시면 감사하겠습니다.