可能重复:
JavaScript闭包如何工作?
我正在玩Google Closure Compiler,输入随机代码来查看它会做什么.
它重写了我的一个函数,看起来像这样:
(function(msg) { console.log(msg); })("Hello World!");???????
Run Code Online (Sandbox Code Playgroud)
看来它"Hello World"是传递msg给它之前的匿名函数的参数.我看了一会儿,并且认为我在jQuery插件中看到类似的东西:
(function( $ ) {
...
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
在与冲突的范围内,现在对我来说更有意义$.但是将参数传递给这样的匿名函数的主要原因或目的是什么?为什么不简单地将参数定义为函数中的变量?编写这样的函数是否有任何性能或灵活性优势?
在我看来,我想呈现:
<p>
{{ say() }}
</p>
Run Code Online (Sandbox Code Playgroud)
在哪里say定义如下:
say = function() {
return "Hello World";
}
Run Code Online (Sandbox Code Playgroud)
我可以在我的控制器中定义它:
function TestCtrl($scope) {
$scope.say = function() { ... };
}
Run Code Online (Sandbox Code Playgroud)
但是它只能在该控制器内访问.
如果我在Angular文件结构之外定义函数,它什么都不呈现.如果我在我的controllers.js文件中定义它,但在控制器函数范围之外,则相同.
放置我的功能的适当位置在哪里,所以我可以在任何控制器中渲染它?
比方说,我有一个可排序的列表:
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我想知道的是,如果我进行如下的jQuery调用:
$.each($('li'), function(key, item) {...});
我可以期待jQuery从上到下遍历条目吗?我已经运行了一些测试,并尝试使用jQueryUI动态重新排列项目,到目前为止,它似乎总是按顺序运行.但总能预料到这一点吗?或者是运气不好,到目前为止我还没有碰到任何东西让我想到其他...?
我在项目的早期设置了ActiveAdmin,并使用默认admin_users模型进行身份验证.我已经使用Devise来设置一个单独的用户模型,并且已经意识到合并这两个表可能会更加智能,这样管理员就可以在Activeadmin和站点的前端进行管理操作.如何配置ActiveAdmin以使用Users模型,可能使用列来标记管理员(例如,is_admin或者事件是管理员和管理员的权限级别)?
Rails 3.1
ActiveAdmin 0.3.3
Devise 1.4.9
Run Code Online (Sandbox Code Playgroud) 我的公司很快将转向Google Apps,我想提出让我们的网站管理页面通过OpenID进行身份验证的想法.因此,登录Google Apps的任何用户都将自动登录我们的网站管理员.目前,我们的网站管理员在数据库中拥有自己的用户和密码列表,但我希望基于Google Apps的用户列表,其唯一标识符保存在我们的数据库中.这样,只需在Google Apps中设置新员工即可访问我们的网站管理.
我已经做了一些研究,并且遇到了像SSO,OpenID和SAML这样的术语,但是我无法缩小我应该走哪条路线.谷歌似乎有很多开放的发展道路,而且我不确定我应该选择哪一条.
我的问题是:我为上述目的寻求什么样的身份验证,是否有人能指出我从哪里开始?我的网站发布在ColdFusion 9中,因此特定于该平台的答案是一个奖励.
说我有这样的结构:
<div data-stuff="foo"></div>
<div data-stuff="foo"></div>
<div data-stuff="foo"></div>
<div data-stuff="bar"></div>
<div data-stuff="bar"></div>
<div data-stuff="bar"></div>
<div data-stuff="baz"></div>
Run Code Online (Sandbox Code Playgroud)
我想隐藏除了第一个之外具有相同属性的所有div,所以我得到:
<div data-stuff="foo"></div>
<div data-stuff="bar"></div>
<div data-stuff="baz"></div>
Run Code Online (Sandbox Code Playgroud)
现在我知道我可以这样做:
$('[data-stuff=foo]:gt(0), [data-stuff=bar]:gt(0), [data-stuff=baz]:gt(0)').hide();
Run Code Online (Sandbox Code Playgroud)
问题是,值data-stuff是动态生成的并且是不可预测的.我该怎么做才能完成这项任务?
编辑
DOM元素本身不一定相同,所以$ .unique()在这里没有帮助.同样重要的是FIRST仍然是显示的,因此重新排序不会发生.
我有大约5个表现非常相似的模型.事实上,我希望他们分享一个显示它们的动作.例如,对于模型Car,Truck,Van我想要一个如下定义:
[Car, Truck, Van].each do |Model|
action_for Model do #I made this up to show what I mean
def index
@model = Model.all
@model_names = @model.map(&:name).join(', ')
end
end
end
Run Code Online (Sandbox Code Playgroud)
我该如何做到这一点,所以我不是在多个控制器中定义相同的动作?(这不是很干)它会在application_controller中吗?如果问题不是太多,我怎么能这样做,所以他们也分享观点?
UPDATE
如果这可以在各个控制器之外,则是优选的.如果我能够正常工作,我甚至不需要生成单独的控制器.
我刚刚用一个全新的Wordpress网站替换了一个tumblr网站.当通过Facebook调试器运行它时,我收到此错误:
" http://example.com/ "上的对象之前的类型为"tumblr-feed:tumblelog",无法更改为"网站"类型的对象,以避免现有操作的数据损坏.
我用Google搜索"不能改变og_type"(引号)并得到字面上为零的结果(现在似乎有这个问题的结果).我真的注定了Facebook数据不匹配吗?
我在Ubuntu 12.04盒子上安装了apache2和ColdFusion 9.我已经在Apache中使用CheckSpelling mod来禁用区分大小写的URL和Apache负责的其他路径.
现在,请记住,我正在使用大约4GB的遗留代码(大约6年的价值),并且很少符合惯例.在我之前的编码器并不关心区分大小写,看看应用程序是如何托管在Windows Box上的.在大多数情况下,ColdFusion表现为<cfinclude>和CreateObject,但似乎<cfinvoke>(在代码库中经常使用)仍然区分大小写.
现在,我已经尝试了将代码移动到vfat分区的方法,但我遇到的是文件名的一大堆编码问题(我们处理外国公司并获得许多特殊字符).删除和/或重命名文件将是麻烦的,因为大多数也在MySQL数据库中被引用,并且也必须在那里进行修改.所以重新编码有点像噩梦.
所以,我很好奇ColdFusion在Linux上运行时是否有任何特殊标志不区分大小写,或者是否有另一种方法可以将这些全部组合在一起?
编辑
我很抱歉,我错了.cfinvoke似乎工作正常.我窒息了cfobject
目前,我正在开发我的应用程序的chromecast集成.目前,您的演员接收器应用程序有3个选项
我非常喜欢风格的媒体接收器的造型,因为这样很容易为你的接收器设计风格.但是,有时我真的想扩展该接收器的功能.例如,像音量指示器一样.
有没有办法可以获得风格媒体接收器的源代码?我检查了谷歌演员的Github,但找不到它.有没人试过这个?
javascript ×3
jquery ×3
coldfusion ×2
coldfusion-9 ×2
model ×2
activeadmin ×1
angularjs ×1
apache ×1
chromecast ×1
css ×1
devise ×1
google-apps ×1
google-cast ×1
html5 ×1
list ×1
opengraph ×1
openid ×1
scope ×1
tumblr ×1
ubuntu ×1
wordpress ×1