我非常喜欢承诺被自动包装的干净(并且我认为易于遵循)方式:
$scope.myData = DataService.query({something:"etc"}); // done;
Run Code Online (Sandbox Code Playgroud)
而且我真的不关心现在这样做的标准方法,没有自动解包:
DataService.query({something:"etc"}).$promise.then(function (data){
$scope.myData = data;
});
Run Code Online (Sandbox Code Playgroud)
我想看到的是这样的:
$scope.pulseData = $scope.setPromise(CitsciAnalytics.pulse({
projId:"yardmap"
}));
Run Code Online (Sandbox Code Playgroud)
但我看不出如何实现这一目标.我得到的最接近的是:
$scope.pulseData = $scope.setPromise("pulseData", CitsciAnalytics.pulse({
projId:"yardmap"
}));
Run Code Online (Sandbox Code Playgroud)
使用添加到根范围的函数:
.run(["$rootScope", "$log", function ($rootScope, $log) {
//parent method to avoid promise unwrapping boilerplate
$rootScope.setPromise = function (scopeVar, promise) {
if (arguments.length === 2 && promise && promise.$promise) {
var scope = this;
promise.$promise.then(function (data){
scope[scopeVar] = data;
});
} else {
$log.error("$rootScope.setPromise has invalid arguments");
}
};
}]);
Run Code Online (Sandbox Code Playgroud)
但我不喜欢unDRY要求必须将范围变量名称作为附加字符串传递.有没有其他人解决这个问题,或者看到一种方法更干净地做到这一点?
愚蠢的问题,但是我用C#正确编码已经很长时间了,而且我已经忘记了我的命名标准并且遇到了一个心理障碍,可以这么说!
我有一个可重用的类,将被50多个项目使用,我想给它一个正确的名称.DLL的命名空间是正确的(例如Client.PROJECT/PRODUCT.xxx.yyy).
我正在考虑将该类命名为"Common",但是想知道这是否有点过于通用?
我正在尝试使用一个消息界面在我的弹出窗口之间传递消息到背景页面(我使用类似于Google示例中的代码).
弹出:
chrome.extension.sendMessage( {msg: "this is popup's msg"}, function(b){
alert('this is popups callback func' +b.backgroundMsg);
});
Run Code Online (Sandbox Code Playgroud)
这就是我在background.js中监听(和回复)的方式:
chrome.extension.onMessage.addListener(function(msg, sender, sendResponse) {
sendResponse({backgroundMsg: "this is background msg"});
});
Run Code Online (Sandbox Code Playgroud)
现在,当我检查控制台中的所有内容时,消息交换正常但我收到以下错误:
Error in event handler for 'undefined': Cannot call method 'disconnect' of null TypeError: Cannot call method 'disconnect' of null
at chromeHidden.Port.sendMessageImpl (miscellaneous_bindings:285:14)
at chrome.Event.dispatch (event_bindings:237:41)
at Object.chromeHidden.Port.dispatchOnMessage (miscellaneous_bindings:250:22)
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
此代码在桌面浏览器中正常工作:
$(window).click(function() {...});
Run Code Online (Sandbox Code Playgroud)
但是在iPad上的Safari中,它根本不会发射.这不受支持吗?当有人触摸浏览器窗口中的某个地方时,通知的正确方法是什么?
我正在编写一个非常简单的 Google Chrome 扩展程序,但遇到了如此多的问题,以至于对于一个规模如此庞大的项目来说,这有点不知所措。
扩展程序非常简单:到达任何页面(例如 google.com)时,页面内容都被隐藏,用户面临一个问题,他必须正确回答……或者被重定向到其他页面提供正确答案的页面。换句话说,除非用户正确回答问题,否则他无法访问 Internet 上的页面。
为了隐藏页面内容,我决定使用以下方法进行简单的叠加:
我试图附加到当前文档的主体上的简单不透明div带position: fixed;,z-index: 2147483647;并在100%的宽度/高度。那行得通,但是:
div.embed在整个页面上追逐s 并设置wmode为“透明”没有帮助,偏移到 -10000px 或设置
display:none;只是缓解但没有解决问题。另请参阅此问题。我尝试在iframe创建并注入页面的 GUI 中沙箱化,使其行为div与上述方法完全相同。它完美地解决了第一种方法的问题,但是:
iframe由于跨域策略,无法访问 的内容。还有那个访问权限——我需要它为用户输入答案的输入字段分配处理程序,我需要记住谁从我的答案输入字段中窃取了焦点,以便在问题得到回答后将其返回,等等。等等。 .所以......我的方法哪里错了?有没有我不知道的第三个或第四个?
我很欣赏但并不真正需要代码作为答案。提示或推动正确的方向也一样好。
PS 我想在某个时候有人会问我是否有代码要分享。我有,但有一堆。你特别想看哪个部分?
我正在使用 D3 来生成家谱图,(基于此处提供的代码:http : //www.d3noob.org/2014/01/tree-diagrams-in-d3js_11.html)并且图数据来自服务器和用户可以选择他想要查看的家庭,然后单击返回数据的提交按钮,然后 D3 绘制图形。但是,如果用户选择了另一个系列(或与此相同的系列)并在不刷新页面的情况下按提交,则新图表将绘制在旧图表下方。如何清除 D3.js 画布,以便新图形是唯一可见的东西?
我正在考虑从永远切换到PM2以保持我的节点应用程序正常运行.
我对以下推荐的启动流程的方法感到困惑:
$ pm2 start app.js -i 4 # Daemonize pm2 and Start 4 clustered instances of app.js
# You can also pass the 'max' params to start
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释什么是app.js的集群实例?我应该开多少个实例?1?马克斯?
我很难找到任何有助于解决这个问题的资源:
假设我想生成一个介于1和5之间的随机数,但希望将随机化加权到底端(就像生成一对夫妇可能拥有的随机数量的孩子一样,更可能是1比5).我应该从哪里开始?这会涉及创建一个复杂的函数来映射该曲线,还是有一种方法可以帮助解决这个问题?
对于非常简单的集合,我想我可以创建一个数组,所以对于上面的例子我可以做,例如:
var children = [1,1,1,1,2,2,2,3,4,5];
return children[Math.floor(Math.random() * children.length)];
Run Code Online (Sandbox Code Playgroud)
但这缺乏灵活性,并假设数据集是在脚本中手动创建的.
我想知道我是否可以使用moment.js将sql TIME(HH:mm:ss)转换为HH:mm.或者也许有一个简单的JavaScript/jQuery解决方案?
我无法弄清楚这一点.我希望loopCheck从5s一直计算到500.我知道有一种比写出所有这些数字更简单的方法.
for (i = 1; i <= 500; i++){
var loopCheck = i === 5 || i === 10 || i === 15 || i === 20 || i === 25;
if (loopCheck === true){
alert("if statement works!!!"):
}
}
Run Code Online (Sandbox Code Playgroud)