0

我有一些麻烦。我编写了一个带有地理服务的网络应用程序。有一个 ViewModel 包含一个 observableCollection 的“Queuers”和代表该集合中的“Queue”的属性 SelectedItem。从表中设置的 SelectedItem 的值:

<tbody data-bind="foreach: Queuers">
                        <tr>
                            <td class="text-center">
                                <span data-bind="text: Number"></span>
                            </td>
                            <td class="text-center">
                                <i class="icon-flag icon-2x" data-bind="style: { color: Color }"></i>
                            </td>
                            <td class="text-center">
                                <span data-bind="text: Length"></span>
                            </td>
                            <td class="text-center">
                                <span data-bind="text: Resolution"></span>
                            </td>
                            <td class="text-center">
                                <button style="background: none; border: none" data-bind="click: $root.getData" @*onclick="$('#myModal').modal()"*@>
                                    <i class="icon-thumbs-up-alt icon-2x"></i>
                                </button>
                            </td>
                            <td class="text-center">
                                <button style="background: none; border: none" data-bind="click: $root.remove">
                                    <i class="icon-trash icon-2x"></i>
                                </button>
                            </td>
                        </tr>
                    </tbody>

和视图模型:

 var Query = function (number, color, length, res, data) {

        this.Number = ko.observable(number);
        this.Color = ko.observable(color);
        this.Length = ko.observable(length);
        this.Resolution = ko.observable(res);
        this.Data = ko.observable(data);

    };

    function TwoDimViewModel() {
        var self = this;
        self.SelectedItem = ko.observable();
        self.SelectedColor = ko.observable(); //just for test
        self.Queuers = ko.observableArray();
        self.remove = function (q) {
            self.Queuers.remove(q);
        };
        self.getData = function (q) {
            self.SelectedItem = q;
            self.SelectedColor = q.Color(); //just for test
        self.addQ = function (q) {
            self.Queuers.push(q);
        };
        self.removeAll = function () {
            self.Queuers([]);
        };
    }

如您所见,使用 ObservaleCollection 操作有一些逻辑。所有工作完美期待一个:

self.getData = function (q) {
            self.SelectedItem = q; 
    }

我想在我的

<div class="row" data-bind="visible: Queuers().length >= 1">
                <button class="btn btn-default" onclick="clearAll()">Clear all</button>
                <br />
                Current selected id: <span data-bind="text: SelectedItem() ? SelectedItem().Number() : 'select element'"></span>
                <br />
                Выбран цвет: <span data-bind="text: SelectedColor() ?  SelectedColor: 'nulll'"></span>
            </div>

将有 SelectedElement 的当前值。以及如何访问属性(数字、颜色等...)

4

1 回答 1

0

改变:

self.SelectedItem = q;
self.SelectedColor = q.Color();

至:

self.SelectedItem(q);
self.SelectedColor(q.Color());

参考: http: //knockoutjs.com/documentation/observables.html#observables

于 2013-10-17T20:36:20.857 回答