可能重复:
在php中创建匿名对象
在JavaScript中,您可以通过以下方式轻松创建没有类的对象:
myObj = {};
myObj.abc = "aaaa";
Run Code Online (Sandbox Code Playgroud)
对于PHP,我发现了这个,但它已有近4年的历史了:http: //www.subclosure.com/php-creating-anonymous-objects-on-the-fly.html
$obj = (object) array('foo' => 'bar', 'property' => 'value');
Run Code Online (Sandbox Code Playgroud)
现在在2013年使用PHP 5.4,有替代方案吗?
我想在我的jQuery Backbone.js Web应用程序中简化一些事情.一个这样的简化是我的菜单和对话框小部件的行为.
以前我在开始时创建了菜单的div框并隐藏了它们display: none; opacity:0;
.当我需要一个菜单时,我改变了它的样式display:block
然后使用jQuery ui位置实用程序来定位div框(因为display:none
无法定位的元素)以及何时完成,最后将其样式更改为opacity:1
.
现在我想隐藏它们visibility:hidden
,当我需要它时,我使用位置实用程序,然后将样式更改为visibility:visible
.当我开始使用这种新方法时,我将在整个Web应用程序会话中有大约10个div框,这些框隐藏但占用空间,与之前隐藏的div框形成对比display:none
.
我的新方法有什么含义?它在任何方面都会影响浏览器性能吗?
我开始阅读有关RequireJS的几个教程.在他们中没有一个是"define"关键字为我解释得令人满意.有人可以帮我解决以下问题:
define(
["Models/Person", "Utils/random", "jquery"],
function (Person, randomUtility, $) {..}
)
Run Code Online (Sandbox Code Playgroud)
什么是"定义"?是否定义了一个带有数组和内部匿名函数的函数?或者是别的什么?有人能给我更多关于这种定义的信息吗?
另外:谢谢nnnnnn和pradeek的回答.在欧洲,当我发布问题的那天晚上2:30.也许因此我没有意识到这是一个简单的函数调用.
我开发了一个jquery&backbone.js网络应用程序.
一个组件有一个html表,在这个表后面是一个backbone.js集合.
这个集合中的任何更改都应该导致更新html表,所以我写了
this.collection.bind("reset add remove", this.renderRows, this);
Run Code Online (Sandbox Code Playgroud)
所以当更新整个集合时,更新html表,添加新模型以及删除模型时.
当用户悬停并点击html表的某一行时,还会调用一个详细视图组件.在这个组件的开头,我从集合中获得了正确的模型
changeModel = this.collection.get(id);
Run Code Online (Sandbox Code Playgroud)
在用户更改了某些属性后,我这样做了
changeModel.set(attrs);
Run Code Online (Sandbox Code Playgroud)
并返回到html表.集合中的模型具有正确的更改值.
但是html表没有更新,因为没有触发3个事件(重置,添加,删除).
所以我在集合绑定中添加了"replace"
this.collection.bind("replace reset add remove", this.renderRows, this);
Run Code Online (Sandbox Code Playgroud)
在从详细信息视图返回之前,我打电话给
this.collection.trigger("replace");
Run Code Online (Sandbox Code Playgroud)
我的解决方案有效,但我的问题是:
是否有任何"原生"的backbone.js解决方案已经存在并且我已经错过了哪些我不需要自己触发的东西?
我有一个linux bash
带有函数的脚本:
myfunctiona ()
{
local MYVAR1="one"
local MYVAR2="two"
echo $MYVAR1
# The line beneath is the line in question!
local MYVAR1=$MYVAR1$MYVAR2
}
Run Code Online (Sandbox Code Playgroud)
当我想给函数中的LOCAL
变量MYVAR1
赋myfunctiona
一个新值时,我是否必须编写
local MYVAR1=$MYVAR1$MYVAR2
Run Code Online (Sandbox Code Playgroud)
或者我也可以写
MYVAR1=$MYVAR1$MYVAR2
Run Code Online (Sandbox Code Playgroud)
如果没有"本地"的第二行,我是否创建了一个具有相同名称的全局变量?
我正在开发一个新的Web应用程序.
这是我第一次使用带有AMD模块的requirejs.
要习惯那种新的范例并不容易 - 据我所知 - 全局命名空间中没有变量.
在以前的Web应用程序中,我总是在全局命名空间中有一个变量,我可以用它来跨不同模块共享多个资源.
现在使用requirejs AMD模块,我使用backbone.js和jquery(两个amd版本 - jquery 1.7.1和backbone.js 0.5.3-optamd3).
在我的应用程序的某处,我从服务器(用户对象)获取backbone.js模块.我想从不同的AMD模块访问该模块.我还想拥有一个应用程序范围的事件对象.
你能告诉我:在requirejs AMD中,在不同模块之间共享资源的正确方法是什么?
我正在开发一个jQuery Backbone.js Web应用程序.
就像在Adobe Flex中一样,我在我的应用程序中为输入元素/小部件实现了双向数据绑定.因此,每个输入元素/小部件都知道其对应的模型和模型属性名称.
当用户点击标签或输入时,字段值将自动提供给模型.
container.model.set(this.attrName, this.value, options); // command 1
Run Code Online (Sandbox Code Playgroud)
在另一个方向,当模型从后端更新时,输入元素/窗口小部件的视图应自动更新:
container.model.bind("change:"+ this.attrName, this.updateView, this); // command 2
Run Code Online (Sandbox Code Playgroud)
问题是:
当用户点击进入并且模型自动更新时,触发"更改:abc"并调用this.updateView,而不仅仅是当新模型来自后端时.
到目前为止我的解决方案是在用户按下enter(命令1)时设置模型值时传递选项"source:gui",并在我的updateView方法中检查它.但我不再满足于这个解决方案了.
有人有更好的解决方案吗?非常感谢
沃尔夫冈
更新:
当传递选项silent:true时,不会调用模型的validate方法,因此无效.请参见Backbone.js源代码0.9.2:
_validate: function(attrs, options) {
if (options.silent || !this.validate) return true;
Run Code Online (Sandbox Code Playgroud) 在我以前的Web应用程序中,当用户从一个"页面"(没有页面重新加载,只是一个新的div)转换到另一个时,我只是隐藏了一个div以供以后使用,并创建了+显示了新的.当用户从地址管理返回到事件管理时,我只需要隐藏当前的div并重新显示已经使用过的div.当然,这需要记忆,但速度更快.
在我的新Web应用程序中,我使用Backbone.js,Require.js和jQuery.我的所有模块都是AMD(jquery 1.7.1,backbone.js 0.5.3-optamd3,...).
在阅读了Derick Bailey的有趣博客(http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/)后,我现在清理我的div,然后转换到一个新的"页面",并在用户返回时重新创建它.
同样,关于requirejs amd模块,我曾经有一个速度超过内存策略:我的Web应用程序导航的核心是我唯一的路由器对象.如果用户第一次选择"页面"/功能,我会为它及其所有依赖项加载amd模块(它是一个backbone.js视图对象)并使用require命令并存储此结果视图对象(及其模型对象) )以供稍后在路由器对象中的数组中使用.当用户返回时,我获取存储的视图对象并重新渲染视图.
我想我也会从这种行为切换到总是重新加载模块(从缓存),但我不确定.
为了更好的方式,我希望得到更好的理解,并想问2个问题:
继续今天我在stackoverflow上找到了一个类似的问题(http://stackoverflow.com/questions/7866971/how-does-amd-specifically-requirejs-handle-dependancies-across-multiple-module).答案是:"它只会被加载一次,上述两个模块都将获得相同的模块值 ......".
因此,似乎存储已经加载的+执行的amd模块的结果以供以后使用并不是那么糟糕.
沃尔夫冈
我对阿迪·奥斯马尼和托马斯·戴维斯非常感谢发表他们的例子和boilerplates(http://backbonetutorials.com/organizing-backbone-using-modules,https://github.com/addyosmani/backbone-aura).
他们帮我开始了很多.
我目前正在开发一个大型Web应用程序.所以我有很多组件,例如地址管理,日期管理,待办事项.每个组件都填充我的应用程序中的整个空间(菜单栏除外).菜单中每个新组件的选择都需要页面转换.
在开始的时候,我采用了上面教程使用的文件结构,样板文件(给出了'views'目录的所有视图).但随着更多组件的添加,将alle视图放入一个视图目录变得让我感到困惑.即使创建子目录也没有解决方案,因为在这个文件结构中我丢失了哪个视图与哪个模型相关的信息.
所以我搜索了另一个解决方案并找到了requirejs amd packages(http://requirejs.org/docs/api.html#packages).这帮助了我很多,因为属于同一组件(模型,集合,视图)的所有模块都进入了一个目录.因为使用"模型"(等等)后缀每个模型,对我来说足够干净的东西.
现在问题:我正处于前期制作阶段.我没有为构建生产部署而构建和连接的东西.但现在我想尝试requirejs优化器.我已经阅读了James Burke的" http://requirejs.org/docs/optimization.html " 页面.但并非一切都很清楚.
我想要的是以下内容:我有这些包目录.来自一个包目录的所有amd模块(视图,模型,集合)应连接到一个文件,但不应包含它们的依赖项,因为许多这些外部包依赖项在开始时单独加载.
是否有任何人具有相同或相似的要求,谁已采取这一步骤,并可以提供一些提示.
非常感谢
沃尔夫冈
在我们的Web应用程序中,我们有输入字段,由css设置样式.
正如您在屏幕截图中看到的那样,样式在Firefox中起作用(从Firebug获取的信息数据),它也适用于Google Chrome.
但是在IE 11中,相同的字段存在填充问题.单词"test"不是垂直居中的.
到目前为止,我尝试过没有成功:
box-sizing: border-box
extra line-height attribute
overflow-visible attribute
vertical-align
Run Code Online (Sandbox Code Playgroud)
非常感谢提前
编辑:
我包含了一个最小的CSS重置(https://perishablepress.com/a-killer-collection-of-global-css-reset-styles/),但它没有改变.
我还包括ie开发人员工具的截图.您可以看到对输入字段生效的所有样式定义.我看到没有冲突的其他风格定义.
编辑:
我再次尝试使用"line-height"属性.它对我不起作用.这个问题:
输入字段必须具有34个像素(22个输入字段(行高)+ 5x2边距+ 1x2边框).这适用于FF和谷歌浏览器.如果我明确地将行高设置为22px,它不会改变IE中的任何内容.如果我将行高设置为其他值(26px),它会将IE更改为更好,但它也会将其他浏览器(26 + 10 + 2)中输入字段的高度更改为38px,因此我无法使用因为输入高度不应超过34像素.
backbone.js ×4
requirejs ×4
javascript ×3
css ×2
bash ×1
function ×1
html ×1
js-amd ×1
performance ×1
php ×1
scope ×1