1

私はjqueryアコーディオンを使用しています。その中にテーブルを挿入しました。そのテーブルには 2 つの列があります。1 列目には SVG 要素が表示され、2 列目にはテキストが表示されます。knockoutjs を使用してテキスト データをバインドしましたが、正常に動作します。しかし、どうすればsvg要素を1列目にバインドできますか。できればd3jsでsvg要素をバインドしたいのですが、他の方法でも構いません

<table id="AccordionTable">
    <tbody data-bind="foreach:Items">
        <tr>
            <td data-bind="I Want to bind here an svg element dynamically"></td>
            <td data-bind="text:Name" style="padding-left: 15px"></td>
        </tr>
    </tbody>
</table>
4

1 に答える 1

0

カスタム バインディングを使用したい。KnockoutでRaphael.jsを使用して同様のことを行いました

<td data-bind="createSvg: parameter"></td>

ko.bindingHandlers.createSvg = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
{
    var options =
        {
            strokeWidth: 5,
            boxBackgroundColour: $('.navbar-inner').css('background-color'),
            positiveFeed: '#00bb00',
            negativeFeed: '#bb0000'
        };
    var substation = new Substation(element, options);
    viewModel.Substation = substation;
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
{
    ko.utils.unwrapObservable(viewModel.LastUpdated);
    if ($(element).is(':visible'))
    {
        var substation = viewModel.Substation;
        if (viewModel.RtuUserData)
        {
            substation.set(element, viewModel);
        }
    }
}

};

init メソッドは一度呼び出されて作成され、ビュー モデルの LastUpdated プロパティが更新されるたびに update メソッドが呼び出されます。

于 2013-01-10T13:25:28.713 に答える