永続化レイヤーの RESTful バックエンドに抽象化を実装しようとしていますが、少し混乱することがあります。$resource サービスにアクセスするために、angular フレームワーク、より具体的には ngResource モジュールを使用しています。問題なくクエリを実行し、バックエンドに対して作業できます。私の問題は、kendo-ui データソースに統合し直すときに発生します。データソースは、クエリがいつ返されたかを認識しません。私の理解では、 $resource は可能な割り当てのために空のコレクション (配列) をすぐに返し、終了時にその配列にクエリの結果を入力します。Kendo-ui の DataSource はこの変数を監視し、更新時にデータソースを利用しているすべての人にこれを反映する必要があります。少し異なるモデル (必要に応じて自分で更新するオブジェクト リテラルを渡す) を使用してこれを正常に実装しましたが、DataSource は更新を問題なく認識します。どんな洞察も役に立ちます!
app.provider('remotePersistence', function () {
this.$get = function ($resource) {
var definitions = {
widgets: $resource('http://127.0.0.1:3000\:3000/widget.json',{},{
archive: { method: 'POST', params: { archive: true }},
active: { method: 'POST', params: { active: true }}
})
};
var datastore = {}
var namespaces = ['widgets'];
namespaces.forEach(function (namespace) {
datastore[namespace] = {
endpoint: definitions[namespace],
cache: definitions[namespace].query()
};
});
return datastore;
};
});
app.controller(
"WidgetsSearchController",
function ($scope, remotePersistence){
$scope.widgets = undefined;
$scope.visibleWidgets = new kendo.data.DataSource({
// data: remotePersistence.widgets.cache,
transport: {
read: function (options) {
options.success(remotePersistence.widgets.cache);
}
}
});
});
//This works but is not desirable style
//$scope.widgets = remotePersistence.widgets.query(function(){ $scope.visibleWidgets.data($scope.widgets) });