小编Anj*_*Anj的帖子

(Webpack)使用url-loader或文件加载器,我真的必须在我的.js中为我想要包含的每个静态图像包含一个require()吗?

我还在学习webpack,但是在我的生产版本中出现图像时遇到了麻烦,直到我偶然发现了一些require('path/to/image.png')在.js文件顶部的代码.所以我尝试了,并且看到它有效.

这对我来说似乎很不稳定.我是否真的必须为我需要服务的每个静态图像中包含其中一个?有一个更好的方法吗?如果没有,这将是混乱的.

javascript webpack

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

在Aurelia中,我可以绑定我的自定义元素调用的包含视图模型的函数吗?

我有一个自定义元素,它将接受用户输入,并在[保存]按钮单击,我想将信息传递给父视图模型,以便我可以将其发送到服务器并移动到下一部分.我将简化这个例子,例如:

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

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

使用<compose view-model ="./ my-element">和<my-element>之间有什么区别?有哪些情况更合适?

我和队友在过去的四个月里一直在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)

我是否需要转换,如果没有,我可以用什么理由来说服他使用我一直使用的相同风格?

javascript aurelia aurelia-binding aurelia-templating

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

当发出方法的代码时,取消装箱Nullable会使评估堆栈处于意外(对我)状态

概述(请原谅我如此详细,但我宁愿它太多而不是太少):我正在尝试以这样的方式编辑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)

c# unboxing reflection.emit dynamicmethod dapper

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