如果您有一个覆盖要“降级”js 解析器,您如何关闭extends父解析器?parserOptions很容易覆盖,因为它是基于键的。extends因为空数组什么都不做,因为它试图将一个空列表附加到原始列表中。如果将其设置为null,则会出现配置解析器错误。
module.exports = {
root: true,
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module'
},
extends: [
'eslint:recommended'
],
overrides: [
{
files: ['vendor/**/*.js'],
parserOptions: {
ecmaVersion: 5,
sourceType: 'script'
},
extends: [] // I want 'eslint:recommended' removed.
}
]
};
Run Code Online (Sandbox Code Playgroud)
解决方法包括循环遍历任何扩展规则集并将它们全部关闭。
module.exports = {
root: true,
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module'
},
extends: [
'eslint:recommended'
],
overrides: [
{
files: ['vendor/**/*.js'],
parserOptions: {
ecmaVersion: 5,
sourceType: 'script'
},
rules: Object.keys(require(path.resolve(path.dirname(require.resolve('eslint')), '../conf/eslint-recommended')).rules).reduce((rules, …Run Code Online (Sandbox Code Playgroud) 我找到了一个说明我问题的jsbin.http://emberjs.jsbin.com/ucanam/2708.
最后一个链接,在链接到没有设置显式查询参数的情况下,它使用控制器上的当前粘滞查询参数值.有没有办法关闭这个粘性功能?会这样做会打破其他情况吗?
我目前的解决方案是在我想要清除的每条路线上清空查询参数:
export default Ember.Route.extend({
deactivate: function() {
var controller = this.controllerFor(this.get('controllerName'));
var queryParams = controller.get('queryParams');
for (var i = 0; i < queryParams.length; i++)
controller.set(queryParams[i], null);
}
});
Run Code Online (Sandbox Code Playgroud)
这有效,但似乎应该有一个更简单的方法.
我应该注意,{{#link-to 'route' (query-params val=null)}}{{/link-to}}为每条路径做一些事情不是一个选择,因为我有一些可重用的代码,其中路由是一个变量,所以我不知道查询参数我必须为null.
如果答案中的文档发生变化,这是正确的方法:
export default Ember.Route.extend({
resetController: function(controller, isExiting) {
if (isExiting) {
var queryParams = controller.get('queryParams');
for (var i = 0; i < queryParams.length; i++)
controller.set(queryParams[i], null);
}
}
});
Run Code Online (Sandbox Code Playgroud)
现在通过这个插件https://github.com/kellyselden/ember-query-params-reset很容易做到这一点.它还会重置为原始值,而不仅仅是将值清零.
我有带嵌套动态段的路由,例如/:locale/products/:product_id/items/:item_id等嵌套.我想在区域设置路由中的操作中替换区域设置.我/:locale更改语言环境时,我不想转换到基本路由.
区域路线行动:
actions: {
localeChanged: function(locale) {
var route = this.controllerFor('application').get('currentRouteName');
this.transitionTo(route, locale);
}
}
Run Code Online (Sandbox Code Playgroud)
这只适用于我没有深度嵌套的情况.我想避免localeChanged在每条路线中实施动作,以提供给定路线所需的确切模型.
更新1 - 脏解决方案:
actions: {
localeChanged: function(locale) {
var routes = this.router.router.currentHandlerInfos;
var models = [];
for (var i = 0; i < routes.length; i++) {
var params = routes[i].params;
for (var param in params) {
if (params.hasOwnProperty(param)) {
models.push(param === 'locale' ? locale : params[param]);
}
}
}
var args = models.slice();
var currentRouteName = this.controllerFor('application').get('currentRouteName');
args.unshift(currentRouteName); …Run Code Online (Sandbox Code Playgroud) 我已经搜索了一下类型推断,但我似乎无法将任何解决方案应用于我的特定问题.
我在构建和传递函数方面做了很多工作.在我看来,它应该能够推断出int类型.我唯一能想到的是lambda返回类型不是由类型推断算法检查的.我已经删除了不必要的逻辑以更清楚地显示问题.
Func<T> Test<T>(Func<Func<T>> func)
{
return func();
}
Run Code Online (Sandbox Code Playgroud)
这编译:
Func<int> x = Test<int>(() =>
{
int i = 0;
return () => i;
});
Run Code Online (Sandbox Code Playgroud)
但这会给出错误"无法根据用法推断出方法的类型参数.请尝试明确指定类型参数":
Func<int> x = Test(() =>
{
int i = 0;
return () => i;
});
Run Code Online (Sandbox Code Playgroud)
我想我只想知道为什么它以这种方式工作和任何变通方法.
我正在尝试批量插入/更新 SqlDataAdapter。当我设置 UpdateBatchSize = 1 时,它可以工作,但将其设置为 2 会出现异常“指定的参数名称 'Id' 无效。”。
using (var sqlDataAdapter = new SqlDataAdapter
{
UpdateBatchSize = 2
})
using (var connection = new SqlConnection("Data Source=server;Initial Catalog=DB;Integrated Security=True"))
using (var command = new SqlCommand("INSERT INTO Test (Id) VALUES (@Id)", connection)
{
UpdatedRowSource = UpdateRowSource.None
})
{
command.Parameters.Add("Id", SqlDbType.Int).SourceColumn = "Id";
sqlDataAdapter.InsertCommand = command;
var table = new DataTable("Test");
table.Columns.Add("Id");
table.Rows.Add(1);
table.Rows.Add(2);
sqlDataAdapter.Update(table);
}
Run Code Online (Sandbox Code Playgroud) 有什么可以替代TogetherJS的好方法吗?它的GitHub已经几个月没有任何活动了,这篇文章说它目前已经死了,未来不确定。
可以说,ShareJS 是 TogetherJS 最独特的功能,它能够查看他人的光标以用于故障排除/远程协助。
var { iWantThis: { andThis, andThisToo } } = x;
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以在一次解构调用中访问所有这三个?我想避免像这样的两个电话:
var { iWantThis } = x;
var { andThis, andThisToo } = iWantThis;
Run Code Online (Sandbox Code Playgroud) javascript ×5
c# ×2
ember.js ×2
ecmascript-6 ×1
eslint ×1
func ×1
generics ×1
lambda ×1
node.js ×1
togetherjs ×1
url-routing ×1
websocket ×1