我正在尝试使用 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:
我已经尝试过这样的服务(可能是错误的用法),仍然没有。现在它根本不会更新 Session 值的变化。
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 放在一起。:(