我得到Uncaught Error: Unknown provider: testProvider from myApp
以下代码:
test
是一个自定义提供商.
angular.module('myApp', [])
.config(function (testProvider) {
testProvider.setPrefix("works: ");
});
Run Code Online (Sandbox Code Playgroud)
完整代码在这里:
angular.module('myApp', [])
.config(function (testProvider) {
testProvider.setPrefix("works: ");
});
angular.module('myApp')
.provider ("test", function () {
var prefix;
this.setPrefix = function(p) {
prefix = p;
}
this.$get = function () {
return {
log: function(msg) {
console.log (prefix + msg);
}
}
}
});
angular.module('myApp')
.controller ("myCtrl", function($scope, test) {
$scope.$watch ('myModel', function (newval) {
test.log(newval);
})
});
Run Code Online (Sandbox Code Playgroud)
Plunker链接:http://plnkr.co/edit/zcIHRn?p = …
我在EC2上运行我的meteor应用程序,如下所示:( node main.js
在tmux会话中)
以下是我用来更新流星应用的步骤:
1)meteor bundle app.tgz
2)scp app.tgz EC2-server:/ path
3)ssh EC2-server并附加到tmux
4)通过Cc终止当前的流星节点进程
5)提取app.tgz
6)运行提取的app.tgz的"node main.js"
这是标准做法吗?
我意识到forever
也可以使用,但是你每次更新我的应用程序时还是要杀死旧节点进程并启动一个新进程吗?升级可以更加无缝,而不会破坏节点进程吗?
这是我的testing.html:
<html>
<meta charset="utf-8">
<script>
window.onload = function() {
var a = document.getElementById("divid");
var ifr = document.createElement('iframe');
a.appendChild(ifr);
ifr.contentDocument.body.style.cssText = (
'margin: 0px;' +
'padding: 0px;' +
'height: 100%;' +
'width: 100%;');
}
</script>
<head></head>
<body>
<div id="divid"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这里 ifr.contentDocument.body.style.cssText = (...) 在 chrome 上工作正常,但在 Firefox 上不工作。是火狐的bug吗?有什么解决方法吗?
找到的解决方法:Firefox 中似乎存在一个奇怪的种族错误。使用 setTimeout 的以下解决方法将使此工作正常,如下所示:
<html>
<meta charset="utf-8">
<script>
window.onload = function() {
var a = document.getElementById("divid");
var ifr = document.createElement('iframe');
ifr.id = "fid";
a.appendChild(ifr);
setTimeout (function() {
ifr.contentDocument.body.style.cssText = (
'margin: …
Run Code Online (Sandbox Code Playgroud) 我的发布功能是这样的:
Meteor.publish('ownedrecords', function() {
if (!this.userId) {
this.error(new Meteor.Error(500, 'Internal server error'));
return;
}
return Records.find({owner:this.userId});
});
Run Code Online (Sandbox Code Playgroud)
我在客户端订阅如下:
Meteor.subscribe("ownedrecords")
Run Code Online (Sandbox Code Playgroud)
但是在用户登录后,客户端无法获取用户拥有的记录.所以我这样做了:
Deps.autorun(function() {
var user = Meteor.userId();
Meteor.subscribe("ownedrecords");
}
Run Code Online (Sandbox Code Playgroud)
这解决了这个问题.但这是标准和推荐的做法吗?