Underscore.js有两种调用函数的方法,我将其称为对象样式和函数样式.对象样式如下所示:
_(myObject).each(function (val, key) {
console.log(key, val);
});
Run Code Online (Sandbox Code Playgroud)
另一方面,函数式看起来像这样:
_.each(myObject, function (val, key) {
console.log(key, val);
});
Run Code Online (Sandbox Code Playgroud)
我很高兴在我的代码中使用对象样式调用,但是在某些时候,调用的对象样式从underscore.js文档中消失了(虽然对象样式调用仍然可以正常工作).我还看到了这个地方的提示(比如在backbone.js文档中),功能风格是"更好"或"首选".
那么,函数式调用是首选方法吗?如果是这样,有人可以解释这背后的原因吗?
更新: @ggozad部分回答了我的问题.但似乎我对underscore.js如何工作的理解是围绕版本0.4.2形成的.通过阅读underscore.js的更改历史记录,您可以看到1.2.4版本的此条目:
你现在可以(也可能应该)写
_.chain(list)而不是_(list).chain().
我想知道你为什么要写_.chain(list)而不是_(list).chain().
我正在一个环境中构建一个应用程序,我只能使用本地文件系统和浏览器(即运行服务器不是一个选项).我在许多页面上都有一个通用的"返回"链接,主要是调用history.back().它看起来像下面这样:
function goBack(evt) {
// Check to see if override is needed here
// If no override needed, call history.back()
history.back();
}
$('#my-back-button').click(goBack);
Run Code Online (Sandbox Code Playgroud)
此代码在Firefox和IE6中运行良好(不要问),但在Chrome中失败.有关为何和/或可能的解决方法的任何建议?
我也试过history.go(-1);哪个也行不通.
根据Auth组件的cakebook 部分,我可以使用以下Users控制器实现简单的身份验证:
class UsersController extends AppController {
var $name = 'Users';
var $components = array('Auth'); // Not necessary if declared in your app controller
/**
* The AuthComponent provides the needed functionality
* for login, so you can leave this function blank.
*/
function login() {
}
function logout() {
$this->redirect($this->Auth->logout());
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在我的观点中得到以下内容:
<?php
$username = $auth->user('username');
echo "Welcome " . $username;
?>
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以做到这一点,还是我需要覆盖登录功能并将用户名存储到会话中?
更新
亚历山大的回答正是我想要的.但是,我会添加以下内容以防其他人像我一样感到困惑.
我花了一段时间才明白,如果你改变了Auth使用的模型(例如,你可能有'人'表而不是'用户'),那么你需要使用类似的东西:
$persondata = $session->read('Auth.Person');
Run Code Online (Sandbox Code Playgroud) 有很多的答案对这个问题的Java(如何字节大小转换为人类可读的格式在Java?和格式文件大小为MB,GB等)和甚至对Groovy/Grails的,更何况PHP,但有一个内置或方便的方法在FreeMarker中执行此操作?
为清楚起见,我采用通用SI方法,而不是2的二进制幂.例如
1 ? 1B
123 ? 123B
1000 ? 1KB
1728 ? 1.7KB
7077888 ? 7.1MB
Run Code Online (Sandbox Code Playgroud)
等等.
鉴于FreeMarker似乎没有对数函数,有没有办法在纯FreeMarker中执行此操作,或者是我用Java创建模板方法的唯一选择.
我试图使用以下内容获取给定目录中的子目录列表:
#!/usr/bin/perl -wT
use strict;
use warnings;
use File::Find::Rule;
use Data::Dumper;
my @subdirs = File::Find::Rule->maxdepth(1)->directory->relative->in('mydir');
print Dumper(@subdirs);
Run Code Online (Sandbox Code Playgroud)
但是,运行它会得到结果:
Insecure dependency in chdir while running with -T switch
我知道File::Find有处理污点模式的选项,但我似乎找不到相应的东西File::Find::Rule.可以做到以上几点吗?我应该使用替代方法列出子目录吗?我是否完全误解了一些我应该了解的关于污点模式的明显事实?
像这样的东西:
Select UNIQUE_VALUES('1,2,3,5,3,4,2,1,2,3,1,4') as CSVUnique
Run Code Online (Sandbox Code Playgroud)
结果将是:
CSVUnique
1,2,3,5,4
Run Code Online (Sandbox Code Playgroud)
谢谢!
javascript ×2
cakephp ×1
coding-style ×1
database ×1
format ×1
freemarker ×1
funnelback ×1
local-files ×1
mysql ×1
numbers ×1
perl ×1
php ×1
select ×1
string ×1