0
LokiJSを使用しているデータベースサービスを持つ小さなAngular1アプリを作成しました。 プロパティ/関数をサービス/ファクトリに動的に追加する方法があるのだろうかと思っていました。プロパティ/機能をサービス/工場に動的に追加する
私は、このサービスを通じて作成されたすべてのコレクションに対して動的getterを追加しようとしています。
ここに私の例:
Database.js
angular.module('MyApp')
.factory('Database', ['$log', '$q', 'Loki',
function Database($log, $q, Loki)
{
var _db,
dbInitialized = false;
function init(config)
{
// some logic here
}
function addCollection(name, cfg) {
// some logic here
_db.addCollection(name, cfg);
// this doesnt work, but is desired ->
/*this['get'+name] = this.getCollection.bind(this, name);*/
}
function getCollection(collectionName) {
// some logic here
return something;
}
return {
init: init,
addCollection: addCollection,
getCollection: getCollection
};
}
]
);
app.js
angular
.module('MyApp', ['lokijs'])
.run(['Database',
function (Database) {
Database.init();
Database.addCollection("MyCollection", {});
// then fill collection, afterwards ->
var collection = Database.getCollection("MyCollection");
// I would like to use Database.getMyCollection()
}]);;
は初期化サービス/ファクトリーを変更する方法はありますか?
なぜ、this ['get' + name] = this.getCollection.bind(this、name) 'が機能しないのかという質問は説明しません。 'addCollection'呼び出しが' get * 'に先行するなら、それはうまくいくはずです。 – estus
あなたのコードは正常に動作するはずです。何かエラーが出ますか? – dfsq
申し訳ありません質問は不必要でした...すべてがこの[get '+ name] = this.getCollection.bind(this、name) – kerosene