Meteor と Angularjs を使用しようとしています。私はMeteor_angularjsパッケージを使用していCollections
ます。
今、私は使用しようとしてSession
おり、私のリアクティブ データ ストア:
TestCtrl = [
"$scope",
function($scope){
$scope.value = Session.get('someValue');
}
]
これは動作しません。
質問: MeteorSession
と Angular を結びつける方法について何か提案はありますか?
私が理解してSession
いる限り、頻繁にポーリングするディレクティブを書くことはできますが、それは良い選択ではないと思います。
ありがとう
アップデート:
私は次のことを試しました:
TestCtrl = [
"$scope",
function($scope){
Meteor.autorun(function(){
$scope.config = Session.get('testsConfig');
if (!$scope.$$phase){
$scope.$digest();
}
});
}
]
それはある程度機能しますが、次のエラーが発生します。
Error: INVALID_STATE_ERR: DOM Exception 11
Error: An attempt was made to use an object that is not, or is no longer, usable.
at derez (http://localhost:3000/test:95:41)
at derez (http://localhost:3000/test:95:30)
at derez (http://localhost:3000/test:95:30)
at derez (http://localhost:3000/test:95:30)
at derez (http://localhost:3000/test:95:30)
at derez (http://localhost:3000/test:95:30)
at derez (http://localhost:3000/test:95:30)
at derez (http://localhost:3000/test:95:30)
at derez (http://localhost:3000/test:95:30)
at derez (http://localhost:3000/test:95:30) angular.js:5526
$get angular.js:5526
$get angular.js:4660
$get.Scope.$digest angular.js:7674
(anonymous function) controllers.js:46
Meteor.autorun.rerun deps-utils.js:78
_.extend.run deps.js:19
Meteor.autorun.rerun deps-utils.js:78
_.extend.flush deps.js:63
_.each._.forEach underscore.js:79
_.extend.flush deps.js:61
_.each._.forEach underscore.js:79
_.extend.flush deps.js:60
更新 2:
このようなサービスを試してみましたが(間違った使い方かもしれません)、まだ何もありません。これで、セッション値の変更がまったく更新されなくなりました。
Meteor.autorun(function(){
app.factory('ssn', function(){ return{
get: function(val){
return Session.get(val);
}
}});
});
TestCtrl = [
"$scope","ssn",
function($scope, ssn){
$scope.config = ssn.get('testsConfig');
}
]
更新 3 :Angular に$apply()
は
角度フレームワークの外側から角度で式を実行します。(たとえば、ブラウザ DOM イベント、setTimeout、XHR、またはサードパーティ ライブラリから)
同時にMeteorMeteor.render()
は
ただし、ほとんどの場合、これらの関数を直接呼び出すことはありません。Handlebars や Jade などのお気に入りのテンプレート パッケージを使用するだけです。render および renderList 関数は、新しいテンプレート システムを実装する人々を対象としています。
ただし、2と2を一緒にすることはできないようです。:(