【发布时间】:2015-08-05 13:10:13
【问题描述】:
我想要实现的是使用一个过滤器,该过滤器将从ret() 函数返回成功或错误。使用下面的代码,它返回{},这可能是它的承诺。
.filter('postcode', ['$cordovaSQLite', '$q',
function($cordovaSQLite, $q) {
return function(PostCodeID) {
function ret() {
var def = $q.defer();
ionic.Platform.ready(function() {
if (window.cordova) {
var db = $cordovaSQLite.openDB({
name: "msddocapp.db"
});
} else {
var db = window.openDatabase("msddocapp.db", "1", "ES Database", 5 * 1024 * 1024);
}
var query = "select * from PostCode where ServerID = ?";
$cordovaSQLite.execute(db, query, [PostCodeID]).then(function(s) {
if (s.rows.length > 0) {
def.resolve(s.rows.item(0).Title);
}
}, function(e) {
console.log(e);
def.reject(PostCodeID);
})
});
return def.promise;
}
return ret().then(function(s) {
return s;
}, function(e) {
return e;
});
}
}]);
这个过滤器只用于一个ng-repeat,所以也许我可以将一个函数绑定到 ng-repeat,比如:
HTML
{{getPostName(item.id)}}
Angular.js
function getPostName(id) {
return post[id].name;
}
【问题讨论】:
-
过滤器需要同步。您打算如何使用它?
-
我在 DB 中获得了 PostCode 的 ID,需要获取它的值并替换 ID,例如 id = 1,然后值为 00-000
-
你写的是服务,不是过滤器
标签: javascript angularjs filter angular-promise