【问题标题】:Durandal composition foreachDurandal 作文 foreach
【发布时间】:2014-02-28 19:02:05
【问题描述】:

我正在遍历一个数组并通过组合显示其内容

<!-- ko foreach: { data: datas} -->
    <div>
            <!-- ko compose: {
                model: 'show',
                activationData: {
                    bundle:bundle
                },                    
               } -->
            <!-- /ko -->
    </div>  
<!-- /ko -->

该组合调用了一个模型 show.js,该模型将 activationData 包包装在一个可观察对象中并将其显示在一个表格中

function (logger, utils) {
    var bundle = ko.observable();

    var activate = function (data) {
        // process data.bundle further 
        bundle(populateBundle(data.bundle));
    };
}

show.html

<table class="table table-bordered">
    <tbody>        
        <!-- ko foreach: {data:bundle().groups, as:'group'} -->
        <tr>
            <td class="tolerances-values" align="center"><span data-bind="text: group.name"></span></td>
            <td class="tolerances-values" align="center"><span data-bind="text: group.code"></span></td>

        </tr>
        <!-- /ko -->
    </tbody>
</table>

一切正常,但是当我循环多个数据时,之前显示的所有组合都会显示最后一个元素的内容。我知道这与我将捆绑包用作可观察对象这一事实有关,但我如何才能让组合将发送到组合的每个捆绑包都视为孤立的可观察对象?我有什么遗漏吗

【问题讨论】:

    标签: knockout.js durandal


    【解决方案1】:

    原因是您没有在视图模型中使用构造函数。您需要创建一个对象并将诸如激活之类的东西附加到它的原型上,而不是您正在执行的方式。在这里查看示例 - http://durandaljs.com/documentation/Using-Composition.html

    这是消息框文档中的另一个示例 -

    var MessageBox = function(message, title, options) {
        this.message = message;
        this.title = title || MessageBox.defaultTitle;
        this.options = options || MessageBox.defaultOptions;
    };
    
    MessageBox.prototype.selectOption = function (dialogResult) {
        dialog.close(this, dialogResult);
    };
    

    【讨论】:

      猜你喜欢
      • 2013-04-03
      • 1970-01-01
      • 2013-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      相关资源
      最近更新 更多