设置初始敲除选择值

时间:2014-06-26 13:02:11

标签: knockout.js

使用以下html,如何将select值设置为observable,以便我可以订阅前后更改。 JustCityGateBasisId(当前设置为值:)是foreach(justCityGatesListPush)中的值。我想使用该值,因此使用正确的值初始化每个创建的选择。这有效。虽然我已将JustCityGateBasisId设置为可观察对象,但我相信Knockout不会触发对该值的任何订阅,因此我无法获得之前和之后的值。我添加了一个事件,但这只会提供之前的值或之后的值而不是两者。如果我使用observable作为值(不是foreach中存在的值),我不能在创建选择时使用foreach值初始化值。

我想要做的是将值设置为observable,然后在foreach执行时能够使用JustCityGateBasisId值更新observable。 span值在绑定时获取正确的值。我希望能够在事件发生时获得两个值,但看起来它是不可能的。

<table>
        <tr data-bind="foreach: justCityGatesListPush">

            <td class="citygatebasisList">
                <select id="cityGate" data-bind="options: CityGates,
                       optionsText: 'Name',
                       optionsValue: 'Id',
                       value: JustCityGateBasisId,
                       event: { change: selectionLastChanged }"></select>
            </td>

            <td class="CityGate">
                <span data-bind="text: JustCityGateBasisId" />
            </td>

        </tr>
    </table>

1 个答案:

答案 0 :(得分:0)

this.myObservable = ko.observable();

this.myObservable.subscribe(function(previousValue){
    console.log('oldvalue: ' + previousValue);
}, this, "beforeChange");

this.myObservable.subscribe(function(newValue){
    console.log('newValue: ' + newValue)
});

http://jsfiddle.net/pAbZn/