淘汰赛css绑定和揭示模块javascript patten

时间:2013-01-29 22:13:55

标签: javascript asp.net-mvc asp.net-mvc-4 knockout.js

我正在使用揭密模块模式来获取我的javascript,并且我正在使用最佳时间让css绑定与knockout一起正常工作。

我的JS

    my.js.module = (function ($) {
        "use strict";

        var my = { 
            testUrl: null 

        },
            testModel= {
                stuff: [{
                    "testOne": null
                }]
            },
            testViewModel = null,
            testId: null;

    my.bindStuff = function () {

        testViewModel =  ko.mapping.fromJS(testModel);

        ko.applyBindings(testViewModel, $(my.testId).get(0));

        $.getJSON(my.testUrl,
            {},
            function (data) {

                var testModelData = {
                    stuff: data
                };

                ko.mapping.fromJS(testModelData, testViewModel);
            });
    };

    return my;
}(jQuery));

在我的cshtml中我有

<tbody data-bind="foreach: stuff">
                <tr>
                    <td data-bind="text: testOne"></td> 
                </tr>
            </tbody>

现在我想通过knock out使用css绑定来获得基于testOne值的css值,它可以是三件事之一。我知道它将是一个ko,计算函数,但我无法弄清楚如何获取每个特定的东西实例来查看testOne并获得正确的值来确定通过ko.computed函数返回的内容。

如果有人可以帮助我,我将非常感激。

1 个答案:

答案 0 :(得分:1)

这个小提示演示如何使用数组映射并通过knockout设置元素的类,它与您的代码不完全匹配,但应该有所帮助: http://jsfiddle.net/davidoleary/UHaVV/

var newData = {    
    test:"this is a test",
    stuff:[
        {"testOne":"Event1"},
        {"testOne":"Event2"},
        {"testOne":"Event3"}
    ]
};

var viewModel = ko.mapping.fromJS( newData );
ko.applyBindings(viewModel);

<div data-bind="text:test"></div>
    <ul data-bind="foreach: stuff">
    <li><span data-bind="text: testOne, attr:{class: testOne}"></span></li>
</ul>

另请查看此问题,了解设置类的两种方法:

Knockout binding css class to an observed model property

你可以使用attr或新的css绑定在上面的问题中都被引用。