我还在学习webpack,但是在我的生产版本中出现图像时遇到了麻烦,直到我偶然发现了一些require('path/to/image.png')在.js文件顶部的代码.所以我尝试了,并且看到它有效.
这对我来说似乎很不稳定.我是否真的必须为我需要服务的每个静态图像中包含其中一个?有一个更好的方法吗?如果没有,这将是混乱的.
我有一个自定义元素,它将接受用户输入,并在[保存]按钮单击,我想将信息传递给父视图模型,以便我可以将其发送到服务器并移动到下一部分.我将简化这个例子,例如:
my-element.js:
import { customElement, bindable } from 'aurelia-framework';
@customElement('my-element')
@bindable('save')
export class MyElement { }
Run Code Online (Sandbox Code Playgroud)
my-element.html:
<template>
<button click.delegate="save()">Click this</button>
</template>
Run Code Online (Sandbox Code Playgroud)
parent-view-model.js:
export class ParentViewModel {
parentProperty = 7;
parentMethod() {
console.log(`parent property: ${this.parentProperty}`);
}
}
Run Code Online (Sandbox Code Playgroud)
parent-view-model.html:
<template>
<require from="./my-element"></require>
<div class="content-panel">
<my-element save.bind="parentMethod"></my-element>
</div>
</template>
Run Code Online (Sandbox Code Playgroud)
有关演示,请参阅(app.js和app.html代表parent-view-model.js和parent-view-model.html):
https://gist.run/?id=96b203e9ca03b62dfb202626c2202989
有用!的种类.不幸的是,this似乎必须my-element代替parent-view-model,所以在这个例子中,打印到控制台的是:parent property: undefined.那样不行.
我知道我可以利用EventAggregator来促进自定义元素和视图模型之间的某些通信,但如果我能帮助它,我想避免增加复杂性.
javascript aurelia aurelia-binding aurelia-templating aurelia-framework
我和队友在过去的四个月里一直在Aurelia建立一个应用程序,他和我一直在以这两种不同的方式创建和使用组件.我希望有一些一致性并将所有内容改为两种风格中的一种,但我不知道哪种风格更适合我们的需求.
我选择使用<compose>因为对我来说它感觉更干净,适合我遇到的每一个需求,但如果使用自定义元素客观上更好,我想切换到那个.
例如:
(他的观点模型:)
import { bindable, bindingMode } from 'aurelia-framework';
export class HisWay {
@bindable({ defaultBindingMode: bindingMode.twoWay }) data;
}
Run Code Online (Sandbox Code Playgroud)
(他的观点:)
<require from="./his-way"></require>
<his-way data.two-way="myModel" containerless></project-name>
Run Code Online (Sandbox Code Playgroud)
(我的观点模型:)
export class MyWay {
activate(model) {
this.model = model;
}
}
Run Code Online (Sandbox Code Playgroud)
(我的方式:)
<compose view-model="./my-way" model.bind="myModel" containerless></compose>
Run Code Online (Sandbox Code Playgroud)
我是否需要转换,如果没有,我可以用什么理由来说服他使用我一直使用的相同风格?
概述(请原谅我如此详细,但我宁愿它太多而不是太少):我正在尝试以这样的方式编辑Dapper源代码,以便从数据库中读取任何DateTime或Nullable ,其DateTime.Kind属性始终设置为DateTimeKind.Utc.
在我们的系统中,来自前端的所有DateTime都保证是UTC时间,并且数据库(Sql Server Azure)将它们存储为UTC中的DateTime类型(我们不使用DateTimeOffsets,我们总是确保DateTime在将其存储在数据库中之前是UTC.)
我一直在阅读有关如何使用ILGenerator.Emit(...)生成DynamicMethods代码的所有内容,并且感觉我对它如何与评估堆栈,本地人等一起工作有很好的理解.在我努力解决这个问题问题,我已经编写了一些代码示例,以帮助我实现最终目标.我写了一个DynamicMethod来取一个DateTime作为参数,调用DateTime.SpecifyKind,返回值.然后与DateTime相同?type,使用其Nullable.Value属性获取SpecifyKind方法的DateTime.
这就是我的问题所在:在dapper中,DateTime(或DateTime?我实际上并不知道,但是当我把它视为我要么得不到我想要的时候)是盒装的.所以,当我尝试使用OpCodes.Unbox或OpCodes.Unbox_Any,然后把结果作为要么日期时间或日期时间?我得到一个VerificationException:操作可能会破坏运行.
显然我错过了一些关于拳击的重要内容,但我会给你我的代码示例,也许你可以帮助我让它工作.
这有效:
[Test]
public void Reflection_Emit_Test3()
{
//Setup
var dm = new DynamicMethod("SetUtc", typeof(DateTime?), new Type[] {typeof(DateTime?)});
var nullableType = typeof(DateTime?);
var il = dm.GetILGenerator();
il.Emit(OpCodes.Ldarga_S, 0); // [DateTime?]
il.Emit(OpCodes.Call, nullableType.GetProperty("Value").GetGetMethod()); // [DateTime]
il.Emit(OpCodes.Ldc_I4, (int)DateTimeKind.Utc); // [DateTime][Utc]
il.Emit(OpCodes.Call, typeof(DateTime).GetMethod("SpecifyKind")); //[DateTime]
il.Emit(OpCodes.Newobj, nullableType.GetConstructor(new[] {typeof (DateTime)})); //[DateTime?]
il.Emit(OpCodes.Ret);
var meth = (Func<DateTime?, DateTime?>)dm.CreateDelegate(typeof(Func<DateTime?, DateTime?>));
DateTime? now = DateTime.Now;
Assert.That(now.Value.Kind, Is.Not.EqualTo(DateTimeKind.Utc));
//Act
var nowUtc = meth(now);
//Verify
Assert.That(nowUtc.Value.Kind, Is.EqualTo(DateTimeKind.Utc));
}
Run Code Online (Sandbox Code Playgroud)
我得到了我期望的东西.好极了!但它还没有结束,因为我们已经拆箱了......
[Test]
public void Reflection_Emit_Test4()
{ …Run Code Online (Sandbox Code Playgroud)