我注意到在很多模板引擎中,在HTML5 Boilerplate中,在各种框架和普通的php站点中都有no-js类添加到<HTML>标签上.
为什么这样做?是否存在某种对此类做出反应的默认浏览器行为?为什么总是包括它?如果没有no-"no-js"情况并且html可以直接解决,那么这不会使类本身过时吗?
以下是HTML5 Boilerplate index.html中的示例:
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]> <html lang="en" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
Run Code Online (Sandbox Code Playgroud)
如您所见,<html>元素将始终具有此类.有人可以解释为什么经常这样做吗?
typeahead示例(http://angular-ui.github.io/bootstrap/#/typeahead)提到在这个自动完成中实现后端很容易,但没有提供任何示例.特别感兴趣的是找出当前输入的字符串,以便我可以将其发送到服务器并发送回已经过滤的结果 - 我想在服务器端执行此优化并最小化我的查询,我不认为返回对于在数据库中具有超过200,000个条目的应用程序,整个结果集以及仅排除不匹配的项目以供显示是可行的.
在这种情况下,我是否应该完全忘记预先输入并使用下拉列表实现自定义解决方案,还是有办法轻松完成此操作?
我有一个select元素定义如下:
<select name="country_id" id="country_id" required="required" ng-model="newAddressForm.country_id">
<option value="">Select Country</option>
<option ng-repeat="country in countries" value="{{country.id}}">{{country.name}}</option>
</select>
Run Code Online (Sandbox Code Playgroud)
当我没有在包含这个select元素的指令中设置任何值时,一切正常.但是,当我执行类似的操作时newAddressForm.country_id = 98,Angular不会选择值为98的选项,而是在select元素的顶部注入一个新选项,如下所示:
<option value="? string:98 ?"></option>
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?这种格式是什么,为什么会发生这种情况?请注意,如果我console.log(newAddressForm.country_id)在指令中执行a ,我得到一个正常的"98",它在生成的HTML中只是奇怪.
编辑: 情境更新.切换到使用ng-select,但问题仍然存在.
奇怪的元素不再出现,但是,现在顶部还有另一个元素,一个只有问号?作为值,没有标签.
那就是我收集的,Angular的"none selected"选择.我仍然不明白为什么它不会选择我告诉它选择的选项.
做newAddressForm.country_id = 98不动也没有结果.这是为什么?
我有一个有趣的情况 - 我有一个表行,当前,当我点击"展开"按钮时,它显示它是隐藏的对应物.包含展开按钮的原始(未隐藏)行也包含某个单元格中的某些内容,单击该单元格后,该内容将变为可编辑状态.我想摆脱展开按钮,并通过双击行本身的任何位置来启用行的扩展,包括单击它时变为可编辑的字段.你可以在这里闻到麻烦.
当我双击一行时,在dblclick发生之前首先触发两个单击事件.这意味着如果我双击该字段,它将变为可编辑的字段,并且该行将展开.我想阻止这个.我希望双击以防止单击的触发,并且单击以执行常规操作.
使用event.stopPropagation()显然不会起作用,因为它们是两个不同的事件.
有任何想法吗?
编辑(一些半伪代码):
原始版本:
<table>
<tbody>
<tr>
<td><a href="javascript:$('#row_to_expand').toggle();" title="Expand the hidden row">Expand Row</a></td>
<td>Some kind of random data</td>
<td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[0]->value("First editable value") ?></td>
<td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[1]->value("Second editable value") ?></td>
<td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[2]->value("Third editable value") ?></td>
<!-- ... -->
<td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[n]->value("Nth editable value") ?></td>
</tr>
<tr style="display: none" id="row_to_expand">
<td colspan="n">Some hidden data</td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
期望的版本:
<table>
<tbody>
<tr ondblclick="$('#row_to_expand').toggle()">
<td>Some kind of random data</td>
<td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[0]->value("First editable value") ?></td>
<td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[1]->value("Second editable value") ?></td>
<td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[2]->value("Third …Run Code Online (Sandbox Code Playgroud) 这是我一直想知道的一种一般性调查.我通过其他人的代码注意到了很多,并且从来没有真正知道实际原因,只是按照趋势,所以这里.
为什么一些方法和属性在前面用下划线命名,而其他方法和属性不是?例如,当具体地将一个使用function _method(),并且当将一个使用function method(),或,换言之,private $_someVariable与private $someVariable?
我们对所做的一切都有一个camelCase命名约定 - 从数据库表到对象属性,列,数据库索引和约束.
我们已经在一个新项目上使用这些约定了两个月,一切都很顺利,昨晚突然间,我们的6个数据库中只有一个的所有关系从camelCase转换为小写.重要的是要注意只有转换的约束 - 索引本身保留了camelCase.
因此,如果我们有一个名为someColumn的列和另一个名为someTable.otherColumn的列,它就是这样的:
someColumn => someTable.otherColumn ON DELETE CASCADE ON UPDATE CASCADE
Run Code Online (Sandbox Code Playgroud)
对此:
someColumn => sometable.otherColumn ON DELETE CASCADE ON UPDATE CASCADE
Run Code Online (Sandbox Code Playgroud)
什么可能导致这个?我们无法重现这个问题 - 我们尝试更改随机约束以查看它是否会全部更改它们并且我们尝试重新导入结构并且它很好,从导入中保留camelCase.
我们致力于OSX并部署到CentOS.
编辑:一位开发人员使用不区分大小写的OSX.他尝试从他自己的机器上的导出中重新导入数据库,它仍然没问题,因此:从不区分大小写的机器导入转储到区分大小写的CentOS并没有破坏.重启mysqld也无法重现这个bug.所有强制小写的mysql设置都关闭.迄今为止,我们无法再次实现这一目标.
编辑2:请注意,这只发生在我们的CentOS开发服务器上 - 使用不区分大小写的操作系统的开发人员之前已经从区分大小写的系统中的其他人导入了他的数据库,并且每次都很好.
我在.htaccess文件中有一堆ErrorDocument指令,以便捕获Apache可以向用户抛出的几乎所有可能的错误,并将所述用户重定向到我的错误控制器,然后以更加用户友好的方式呈现错误.但是,它似乎不起作用.
例如,当我输入无效的网址时,例如mysite.com/""##$##$!我总是得到Apache的默认403错误消息,而不是重定向到我的errors.php文件.以下是我正在使用的指令.我需要做任何其他事情来使它工作吗?(已设置AllowOverride All)
ErrorDocument 403 /errors.php
Run Code Online (Sandbox Code Playgroud)
如果这是接近绝对自定义错误处理的错误方法,请告诉我,我将非常感谢在正确的方向上轻推.
谢谢!
编辑:哦,我以为我会提到这个.我编写了自己的MVC结构来重定向请求,它运行良好.从PHP内部,如果用户请求不存在的URL,我自己的404错误将被解雇(或者我已经定义的任何其他错误).所以基本上,如果我进入mysite.com/!!!! 进入URL,它将工作,我得到一个404.但是,每当我用双引号字符启动一个请求时,默认的Apache 403错误就会触发.奇.此外,500错误也将无法重定向到errors.php,并且只会返回默认的Apache 500屏幕(例如,使用标头测试时("HTTP/1.0 500内部服务器错误"); die();) .
编辑3:我刚尝试放入ErrorDocument 200 "message"我的.htaccess文件,没有任何反应,我打开的任何页面都正常打开.最糟糕的情况是,这应该陷入无限循环.最好的情况,它应该输出"消息".它没有做,它只是忽略了ErrorDocument.Apache的Access Log记录了一个普通的200 OK标题,然而.htaccess完全忽略了它.
基准文档说并发性是指同时完成的请求数量,而请求数量是请求总数.我想知道的是,如果我以20的并发级别发出100个请求,这是否意味着同时对20个请求进行5次测试,或者同时对20个请求进行100次测试?我假设第二个选项,因为下面引用的示例数字..
我在想,因为我经常在一些测试博客上看到这样的结果:
Complete requests: 1000000
Failed requests: 2617614
Run Code Online (Sandbox Code Playgroud)
这似乎难以置信,因为失败请求的数量高于总请求数.
编辑:显示上述数字的网站:http://zgadzaj.com/benchmarking-nodejs-basic-performance-tests-against-apache-php
或者可能是它一直在努力,直到它达到一百万次成功?嗯...
我正在尝试与任意数量的PHP数组相交,其数量取决于用户提供的参数,每个参数都可以包含任意数量的元素.
例如:array1(1,2,3,4,5)array2(2,4,6,8,9,23)array3(a,b,3,c,f)... arrayN(x1,x2, x3,x4,x5 ...... xn)
由于array_intersect接受了一个params列表,我无法构建一个数组数组来交叉,并且必须绕过它.我想这个解决方案:http://bytes.com/topic/php/answers/13004-array_intersect-unknown-number-arrays但这并没有工作,因为报告的错误array_intersect需要2个或更多PARAMS.
有没有人知道如何以尽可能简单的方式处理这个问题?
尝试使用VueJS 2.0 RC,并使用fetch API为某些组件加载一些数据.这是一个模拟的例子:
const Component = {
template: '#comp',
name: "some-component",
data: function () {
return {
basic: data.subset,
records: function () {
return fetch('/datasource/api', {
method: 'get'
}).then(function (response) {
return response.json();
}).then(function (response) {
if (response.status == "success") {
return response.payload;
} else {
console.error(response.message);
}
}).catch(function (err) {
console.error(err);
});
}
}
}
};
Run Code Online (Sandbox Code Playgroud)
该data对象是一个全局应用程序状态,在应用程序初始化之前定义,并且组件中只需要它的一部分,因此该部分.组件数据的主要集合来自我试图调用的另一个端点.但是,该data属性需要一个对象,并且它返回一个Promise,它不能真正用于模板中的循环上下文以进行渲染等(例如v-for="record in records")
我是以错误的方式来做这件事的吗?records完全获取后,数据属性更新的方法是什么?有没有办法强制代码停止,直到promise解决(有效地使其同步)?无论如何,该组件没有数据是没用的,所以在它可以被使用之前有一段等待时间.
在不使用vue-async或vue-resource等插件的情况下异步填充组件数据字段的正确方法是什么?
(我知道我可以使用非承诺ajax调用的XHR/jQuery方法来做到这一点,但我想学习如何使用fetch做到这一点)
更新:我尝试定义一个创建的钩子,以及一个加载数据的方法,比如这个但没有骰子 - 在我自己的实验中,一旦加载了records属性就无法更新.即使数据已成功获取(成功登录到控制台),它也不会更改. …
php ×4
javascript ×3
angularjs ×2
apache ×2
angular-ui ×1
arrays ×1
asynchronous ×1
camelcasing ×1
concurrency ×1
constraints ×1
events ×1
foreign-keys ×1
html ×1
jquery ×1
loops ×1
modernizr ×1
mysql ×1
node.js ×1
performance ×1
php-5.3 ×1
promise ×1
propagation ×1
vue.js ×1