小编Gar*_*y F的帖子

Durandal自定义视图位置策略

我试图弄清楚如何使用自定义视图位置策略,我已经阅读了此页面上的文档http://durandaljs.com/documentation/Using-Composition/但我并不完全理解策略函数应该是什么样的喜欢.

任何人都可以给我一个快速的例子,说明这个函数的实现是什么样的,以及返回的承诺(即使是简单的)等等?

提前谢谢,加里

ps这是我的html中的代码:

 <div>
     <div data-bind="compose: {model: 'viewmodels/childRouter/first/simpleModel', strategy:
 'viewmodels/childRouter/first/myCustomViewStrategy'}"></div> </div>
Run Code Online (Sandbox Code Playgroud)

这是myCustomViewStrategy中的代码:

define(function () {

    var myCustomViewStrategy = function () {

        var deferred = $.Deferred();

        deferred.done(function () { console.log('done'); return 'simpleModelView'; });
        deferred.fail(function () { console.log('error'); });

        setTimeout(function () { deferred.resolve('done'); }, 5000);

        return deferred.promise();
    };

return myCustomViewStrategy;
});
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

未捕获的TypeError:无法读取未定义的属性"display" - 这是在完成后已在控制台窗口中记录.

durandal

5
推荐指数
1
解决办法
724
查看次数

如何处理 Requirejs 中的 404 错误

我目前正在尝试确定处理 Durandal 应用程序中不同错误的最佳方法。我正在测试的一种场景是所需模块不存在,即

define(['dummy'], function (Dummy) { return {}; });
Run Code Online (Sandbox Code Playgroud)

哪里dummy不存在。我已将以下内容直接添加到我的 main.js 文件中requirejs.config({...})

requirejs.onError = function (err) {
    console.log('Global error', err);
};
Run Code Online (Sandbox Code Playgroud)

但错误永远不会从这里记录。Durandals system.js 文件中的 404 错误显示在控制台窗口中,并且还记录了错误消息:

未捕获错误:无法加载路由模块(viewmodels/features/errorHandling/scriptNotFound/one)。详细信息:脚本错误:虚拟

看起来该requirejs.onError函数永远没有机会被调用。我希望能够记录这些错误并通知用户存在问题等。有人知道我会如何做到这一点吗?

requirejs durandal durandal-2.0

5
推荐指数
1
解决办法
4216
查看次数

我在哪里为包含文件的域模型实现文件存储

我正在尝试为 Web 应用程序的服务器端代码坚持域驱动设计。此应用程序允许用户上传文件,然后处理它们。然后,用户可以下载原始文件、过程的日志文件或包含错误记录的文件。

我有一个名为 import 的域模型,它具有 FileName 属性,并且该文件的物理位置取决于用户 ID 等,即在动态构建的文件夹结构中。

显然域模型不应该知道文件存储,因为那是基础设施,所以我正在考虑创建一个基础设施服务,它采用导入域模型并检索各种文件。

然后这将文件存储与域模型分开,但阻止我向域模型询问其文件,即我本来希望导入域模型给我它的错误文件或原始文件等。

我使用基础设施服务是否正确,或者是否有更好的方法来使用域模型,即注入处理文件读取等的类,或者是否有更好/更正确的方法来做到这一点?

问候,加里

domain-driven-design

5
推荐指数
1
解决办法
1434
查看次数

使用Simple Injector在C#中实现域事件处理程序模式

我正在尝试使用Simple Injector在C#中实现域事件模式.

我已经将我的代码简化为一个文件,该文件可以作为控制台应用程序运行,并且已经排除了Simple Injector代码,以便为此问题保持清晰.

我遇到的问题是每个事件可能有多个事件处理程序,并且可能会引发多个事件,但我想限制我的Dispatcher只处理实现该IEvent接口的事件,所以我把这个限制放在我的Dispatch方法上.

这引起了如何从Simple Injector获取实例的问题,因为每次Dispatch调用该方法都是TEvent类型IEvent(正如我所期望的那样)但是我需要获取传入的事件的类型,以便我可以从Simple获取相关的处理程序注射器.

希望我的代码能够更好地解释这个:

interface IEvent 
{
}

interface IEventHandler<T> where T : IEvent
{
    void Handle(T @event);
}

class StandardEvent : IEvent
{
}

class AnotherEvent : IEvent
{
}

class StandardEventHandler : IEventHandler<StandardEvent>
{
    public void Handle(StandardEvent @event)
    {
        Console.WriteLine("StandardEvent handled");
    }
}

class AnotherEventHandler : IEventHandler<AnotherEvent>
{
    public void Handle(AnotherEvent @event)
    {
        Console.WriteLine("AnotherEvent handled");
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的调度员:

static class Dispatcher
{
    // I …
Run Code Online (Sandbox Code Playgroud)

c# generics inversion-of-control simple-injector

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