在Ember 1.13中,以下代码生成警告:
{{#each widgetNames as |widgetName|}}
{{component widgetName removeWidget="removeWidget"}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
其中widgetNames是父控制器中的字符串数组.
widgetNames: []
Run Code Online (Sandbox Code Playgroud)
在恩伯1.13我现在得到这个警告:
警告:在
{{each}}未指定密钥的情况下使用可能会导致异常行为.请指定一个key标识正在迭代的每个项目的唯一值.例如{{each model key="@guid" as |item|}}.
这很容易修复您典型的模型场景,但如何为字符串数组指定键?
编辑:当迭代字符串数组时,此问题处理您现在在Ember 1.13中获得的警告.如果你点击这个警告你没有明确地寻找@index参数,比如在emberjs中的#each中访问索引.事实上,Artych的答案显示了两个可能的使用密钥,这些密钥与emberjs中#each中的访问索引的答案不相关或存在,因为这是@index参数本身特有的.
我在Xcode 6.3中有这样的代码:
let store = EKEventStore()
for source in store.sources() {
let st: EKSourceType = source.sourceType!
if st == EKSourceTypeLocal {
localSource = source;
}
}
Run Code Online (Sandbox Code Playgroud)
第五行(如果st ..)给出编译器错误:'二进制运算符==不能应用于两个EKSourceType操作数'
如何检查源是否是本地的(在Swift中)并将其编译?
我有一个父组件,其模板包含来自https://www.npmjs.com/ember-cli-dropzonejs的dropzone组件:
{{drop-zone url='#' addRemoveLinks=true success=fileReceived}}
Run Code Online (Sandbox Code Playgroud)
在父控制器中,我有一个调用的方法fileReceived,当成功事件在dropzone上触发时调用该方法.但是,我想在调用方法时调用存储在控制器上的其他方法fileReceived但我无法访问this.我尝试设置所谓的实例变量self来this上didInsertElement,但它给我的窗口,而不是我的分量.
这是我的父组件控制器:
import Ember from 'ember';
export default Ember.Component.extend({
self:null,
didInsertElement:function()
{
this.set('self', this);
},
fileReceived: function (file) {
//Validate sheet
this.sendAction('doStuff', file); //"this" returns a dropzone object instead of parentObject
//this.doStuff(file);
},
actions: {
doStuff: function (file) {
//do stuff with the file
}
});
Run Code Online (Sandbox Code Playgroud) 建议Microsoft.AspNetCore.All在.NET Core 2中使用,因为它简化了依赖关系,并使用树振动器魔法来不会破坏您发布的内容.
我遇到了一个问题:使用引用的库时StackExchange.Redis,我最终将引发冲突作为Microsoft.AspNetCore.All引用内容StackExchange.Redis.StrongName.请参阅问题VS.NET 2017强制使用ASP.NET 2.0 Core应用程序中的StackExchange.Redis 1.2.4.0获取更多信息.如果我坚持单独引用依赖项,那么我可以避免这种冲突并编译.
除了在你不使用的东西之间发生冲突之外Microsoft.AspNetCore.All,由于这个建议,你会遇到哪些其他问题?
我有一个多边形的SqlGeographys列表.我想将它们组合成一个多面体类型的SqlGeography.
List<SqlGeography> areaPolygons = GetAreaPolygons()
SqlGeography multiPoly = null;
foreach (SqlGeography geog in areaPolygons)
{
/// Combine them somehow?
}
Run Code Online (Sandbox Code Playgroud) 在过去,您可以使用ArrayControllers(在1.13.0中弃用),我们知道不会在ember中推荐使用不久的控制器.目前是否可以仅使用我的路线对模型进行排序?
即
/routes/orders.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function() { return this.store.findAll('order'); }
});
Run Code Online (Sandbox Code Playgroud)
我如何按"名称"排序作为示例,但仅使用路线?
请注意,此问题类似于如何在Ember.js中对模型进行排序? - 但它是通过任何方法,而我的问题是特定的只使用路线(如果可能).
我的产品型号有很多价格.我有一个页面显示产品名称,代码,然后显示它的价格数量,即:
<tbody>
{{#each model as |product id|}}
<tr>
<td>{{#link-to "product" product}}{{product.name}}{{/link-to}}</td>
<td>{{product.code}}</td>
<td>{{product.prices.length}}</td>
</tr>
{{/each}}
</tbody>
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,使用product.price.lengthEmber数据会产生数千个按ID获取价格的请求.我不需要任何有关此页面上实际价格的信息.如果没有Ember数据下载所有价格,我怎么能在这里使用长度属性?
车型/ product.js:
export default DS.Model.extend({
code: DS.attr('string'),
name: DS.attr('string'),
prices: DS.hasMany('price', {async: true})
});
Run Code Online (Sandbox Code Playgroud)
车型/ price.js
export default DS.Model.extend({
product: DS.belongsTo('product', {async: true}),
value: DS.attr('number'),
minUnits: DS.attr('number'),
maxUnits: DS.attr('number')
});
Run Code Online (Sandbox Code Playgroud) 完整的弃用消息是 DEPRECATION: A property of <orders-app@view:test-holder::ember3010> was modified inside the didInsertElement hook. You should never change properties on components, services or models during didInsertElement because it causes significant performance degradation.
为了简化场景,我们假设我们有一个带有输入框的组件,我们希望将文本框日期设置为今天加上几天numberOfDays.因此,如果今天是2015年1月3日,numberOfDays=2那么文本框值应该是05-01-2015(假设我们想要DD-MM-YYYY格式化).所以我们的设置可能是:
日期shower.hbs
{{input type="text" value=dateInput}}
Run Code Online (Sandbox Code Playgroud)
部件/日期shower.js
export default Ember.Component.extend({
didInsertElement: function() {
var numberOfDays = this.get('numberOfDays');
var dayToUse = new Date(); // today
dayToUse.setDate(dayToUse.getDate() + numberOfDays);
this.set('dateInput', moment(nextDay).format('DD-MM-YYYY'));
}
});
Run Code Online (Sandbox Code Playgroud)
然后我们可能会使用类似的东西
{{date-shower numberOfDays=2}}
Run Code Online (Sandbox Code Playgroud)
当组件计算其属性本身的默认值时,基于传递给它的属性,我应该使用什么钩子而不是didInsertElement来阻止弃用消息?
我有一个工作的http GET,没有使用任何第三方位,我是iOS的新手,所以这是最初设置的困难.我的代码看起来像:
-(NSString *) SendGetRequestToRest:(NSString *)urlEndString
{
NSString *userName = @"userN";
NSString *password = @"PassW";
NSString *urlBaseString = @"http://someurl.co.uk/";
NSString *urlString = [NSString stringWithFormat:@"%@%@", urlBaseString, urlEndString];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"GET"];
NSString *str1 = [NSString stringWithFormat:@"%@:%@", userName, password];
NSString *encodedString = [self stringByBase64EncodingWithString:str1];
[request addValue:[NSString stringWithFormat:@"Basic %@",encodedString] forHTTPHeaderField:@"Authorization"];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *str = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"str: %@", str);
return str;
}
Run Code Online (Sandbox Code Playgroud)
我需要做的是跟踪http GET的状态代码是不是很好200,我看到如何检查iOS中的Web服务器的状态?这看起来很有希望,即添加:
-(void)connection:(NSURLConnection *)connection …Run Code Online (Sandbox Code Playgroud) 在组件中,为组件提供可选操作非常容易.在组件的JS中我可以写:
if (this.get('someAction')) {
this.sendAction('someAction');
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序路由中,我有一个"通用操作",可以节省我提供带有长动作列表的窗口小部件组件,它看起来像这样:
genericAction: function(customActionName, customActionParams) {
this.send(customActionName, customActionParams);
}
Run Code Online (Sandbox Code Playgroud)
由于各种原因(包括在某些组件中使用genericAction来触发测试可以订阅的操作,但是应用程序不一定用于某些难以测试的异步/伪装工作流程)我宁愿检查操作是否存在,即:
genericAction: function(customActionName, customActionParams) {
if (this.get(customActionName)) {
this.send(customActionName, customActionParams);
}
}
Run Code Online (Sandbox Code Playgroud)
与组件中的方式类似,但这不起作用,也不起作用this.controller.get(customActionName).
除了保留硬编码的动作列表之外,我该如何实现这一目标?
结果是未加载符号,因此我无法使用Parse,尝试插入#import会导致找不到文件错误。我遵循了Parse网站上现有项目的快速入门指南,并添加了所需的所有库(例如AudioToolbox Framework等),所以这不是问题。
我得到的确切警告是:
ld:警告:忽略文件/Users/XXXXXXX/Documents/YYYYYYYY/Parse.framework/Parse,文件是为不受支持的文件格式而构建的(0x56 0x65 0x72 0x73 0x69 0x6F 0x6E 0x73 0x2F 0x43 0x75 0x72 0x72 0x65 0x6E不是xx74)链接的体系结构(i386):/ Users / XXXXXXX / Documents / YYYYYYYY / Parse.framework / Parse
该项目是在Xcode 5.02中创建的,并且针对ios 6.1,请告知是否需要其他信息。我下载了Parse入门项目,并且构建良好,但是似乎已设置了一些自定义体系结构,所以也许有一个构建设置可以尝试在项目中进行更改?
假设我有一个清单{1,3,5,7,9,11}
我想使用像这样的代码浏览列表
foreach (int myInt in myIntList.OrderBy(...))
{
/// Do stuff
}
Run Code Online (Sandbox Code Playgroud)
但是这里的顺序是1然后是11然后是3然后是9然后是5然后7.如何按顺序执行此操作?
我的实际情况稍微复杂一点,for循环看起来像这样:
foreach (Tuple<string, int, int, int> im in iconMappings.OrderBy(i => i.Item4).ThenByDescending(i => i.Item3))
{
// Do stuff
}
Run Code Online (Sandbox Code Playgroud)
因此,如上所述对它们进行排序我需要获得交替元素,因此理想情况下应该可以应用于此.
ember.js ×6
ios ×3
c# ×2
iphone ×2
.net-core ×1
dropzone.js ×1
ember-cli ×1
ember-data ×1
ios7 ×1
ios8 ×1
linq ×1
sqlgeography ×1
swift ×1
xcode ×1