小编Wol*_*mec的帖子

php创建没有类的对象

可能重复:
在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,有替代方案吗?

php

282
推荐指数
1
解决办法
27万
查看次数

可见性:隐藏和显示之间的性能差异:无

我想在我的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.

我的新方法有什么含义?它在任何方面都会影响浏览器性能吗?

html javascript css performance

60
推荐指数
5
解决办法
4万
查看次数

RequireJS库的定义说明

我开始阅读有关RequireJS的几个教程.在他们中没有一个是"define"关键字为我解释得令人满意.有人可以帮我解决以下问题:

define(
  ["Models/Person", "Utils/random", "jquery"], 
  function (Person, randomUtility, $) {..}
)  
Run Code Online (Sandbox Code Playgroud)

什么是"定义"?是否定义了一个带有数组和内部匿名函数的函数?或者是别的什么?有人能给我更多关于这种定义的信息吗?

另外:谢谢nnnnnn和pradeek的回答.在欧洲,当我发布问题的那天晚上2:30.也许因此我没有意识到这是一个简单的函数调用.

javascript requirejs

48
推荐指数
2
解决办法
3万
查看次数

backbone.js集合事件

我开发了一个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解决方案已经存在并且我已经错过了哪些我不需要自己触发的东西?

backbone.js

16
推荐指数
1
解决办法
4万
查看次数

从linux中的函数中分配局部变量bash一个新值

我有一个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变量MYVAR1myfunctiona一个新值时,我是否必须编写

local MYVAR1=$MYVAR1$MYVAR2
Run Code Online (Sandbox Code Playgroud)

或者我也可以写

MYVAR1=$MYVAR1$MYVAR2
Run Code Online (Sandbox Code Playgroud)

如果没有"本地"的第二行,我是否创建了一个具有相同名称的全局变量?

bash scope function global-variables

15
推荐指数
2
解决办法
8029
查看次数

在不同的amd模块之间共享资源

我正在开发一个新的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中,在不同模块之间共享资源的正确方法是什么?

requirejs backbone.js

13
推荐指数
1
解决办法
5983
查看次数

backbone.js中的双向数据绑定

我正在开发一个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)

backbone.js

12
推荐指数
2
解决办法
2万
查看次数

Javascript Web应用程序中的内存与速度

在我以前的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个问题:

  1. 我有5个AMD模块.当用户需要一个功能时,我加载并执行一个模块并获取一个backbone.js视图对象作为结果,我将其存储在路由器对象的数组中.每个AMD模块都有Backbone.js(AMD版本)作为依赖项.当用户访问了所有5个"页面"并且我的所有5个视图对象都存储在我的数组中时,我的浏览器内存中是否有5个backbone.js副本,因为每个backbone.js依赖项都是从缓存中获取并重新执行,或者有垃圾收集器删除它?
  2. 其他Web应用程序开发人员如何考虑这种速度超过内存策略?

继续今天我在stackoverflow上找到了一个类似的问题(http://stackoverflow.com/questions/7866971/how-does-amd-specifically-requirejs-handle-dependancies-across-multiple-module).答案是:"它只会被加载一次,上述两个模块都将获得相同的模块值 ......".

因此,似乎存储已经加载的+执行的amd模块的结果以供以后使用并不是那么糟糕.

沃尔夫冈

javascript web-applications requirejs

9
推荐指数
1
解决办法
391
查看次数

使用backbone.js和requirejs包的Web应用程序,requirejs优化器

我对阿迪·奥斯马尼和托马斯·戴维斯非常感谢发表他们的例子和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模块(视图,模型,集合)应连接到一个文件,但不应包含它们的依赖项,因为许多这些外部包依赖项在开始时单独加载.

是否有任何人具有相同或相似的要求,谁已采取这一步骤,并可以提供一些提示.

非常感谢
沃尔夫冈

requirejs backbone.js js-amd

7
推荐指数
1
解决办法
3321
查看次数

Internet Explorer 11中的文本输入填充不能按预期方式工作

在我们的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像素.

在此输入图像描述

css internet-explorer

6
推荐指数
1
解决办法
8411
查看次数