Durandal自定义视图位置策略

Gar*_*y F 5 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" - 这是在完成后已在控制台窗口中记录.

Gar*_*y F 1

好吧,我通过以下方式创建自定义视图策略解决了这个问题:

define(['durandal/system', 'durandal/viewEngine'], function (system, viewEngine) {

    var myCustomViewStrategy = function () {
        return viewEngine.createView('views/childRouter/first/sModelView');
    }

    return myCustomViewStrategy;

});
Run Code Online (Sandbox Code Playgroud)