0

http://learn.knockoutjs.com/#/?tutorial=collectionsからのガイダンスに従って、選択リスト ボックスに入力することができます。しかし、私は2つの問題に直面しています。

  • 選択したインデックスは 1 オフセットされます
  • 私の年の選択リストはインデックスを選択しません。

http://jsfiddle.net/poundingCode/a9MGk/にフィドルを追加し、呼び出しからのデータをサーバーに追加しました。

私が最も困惑しているのは、BDay コントロールと BYear コントロールが実質的に同一であることです。基になるモデルと異なる唯一の点は、BYear が null 許容のデータ型であることですが、渡す値は null ではありません。

いつものように、どんなガイダンスも大歓迎です。

コード: `var Namespace = {};

    // View model declaration
    Namespace.initMemberVM = function (model) {
        console.log('initViewCalled');
        var memberViewModel = {
            Id: ko.observable(model.Id),
            BDay: ko.observable(model.Days[model.BDay]),
            BMonth: ko.observable(model.Months[model.BMonth]),
            BYear: ko.observable(model.Years[model.BYear]),
            Company: ko.observable(model.Company),
            FName: ko.observable(model.FName),
            LName: ko.observable(model.LName),
            Interests: ko.observable(model.Interests),
            Married: ko.observable(model.Married),
            MName: ko.observable(model.MName),
            Name: ko.observable(model.Name),
            SalutationId: ko.observable(model.SalutationId),
            Salutation: ko.observable(model.Salutations[model.SalutationId]),
            Months: ko.observableArray(model.Months),
            Days: ko.observableArray(model.Days),
            Years: ko.observableArray(model.Years),
            Salutations: ko.observableArray(model.Salutations)
        };
        return memberViewModel;
    };

1992"},{"Id":"1993"}],"Associations":"","BDay":2,"BMonth":2,"BYear":1983, "SalutationId":1, "FName": "James", "MName":"R", "LName":"Fleming", "Interests":"知りたいのは、年の選択ドロップダウンに 1983 という値が表示されないのはなぜですか??? そして、選択したインデックスが 1 ずれているのはなぜですか? SalutationId = 1 ですが、表示される値は SalutationId #2 のものです..."}; 1992"},{"Id":"1993"}],"Associations":"","BDay":2,"BMonth":2,"BYear":1983, "SalutationId":1, "FName": "James", "MName":"R", "LName":"Fleming", "Interests":"知りたいのは、年の選択ドロップダウンに 1983 という値が表示されないのはなぜですか??? そして、選択したインデックスが 1 ずれているのはなぜですか? SalutationId = 1 ですが、表示される値は SalutationId #2 のものです..."}; 知りたいのは、なぜ年の選択ドロップダウンに 1983 という値が表示されないのか??? そして、選択したインデックスが 1 ずれているのはなぜですか? SalutationId = 1 ですが、表示される値は SalutationId #2 のものです..."}; 知りたいのは、なぜ年の選択ドロップダウンに 1983 という値が表示されないのか??? そして、選択したインデックスが 1 ずれているのはなぜですか? SalutationId = 1 ですが、表示される値は SalutationId #2 のものです..."};

    $(document).ready(function () {
          var viewModel = Namespace.initMemberVM(data);
        ko.applyBindings(viewModel);
    });`

HTML

<article>
    <h2>Summary</h2>
    <label data-bind="text: FName"></label>
    <table>
        <tbody>
        <tr><td>User Id</td><td colspan="4"><label data-bind="text: Name"></label></td></tr>
        <tr>
        <td>Salutation</td><td><select data-bind="options: Salutations, value: Salutation, optionsText: 'Name', optionsCaption: 'Select'"></select></td>
        </tr>
        <tr>
        <td></td><td>First</td><td>Middle</td><td>Last</td>
        </tr>
        <tr>
            <td>Name</td><td><input type="text" data-bind="value: FName"></td><td><input type="text"  data-bind="value: MName"></td><td><input type="text"  data-bind="value: LName"></td>
        </tr>
        <tr><td></td><td colspan="2">Month &nbsp;&nbsp; Day &nbsp;&nbsp; Year</td></tr>
            <tr><td>DOB</td><td colspan="2">
                                <select name="BMonth" data-bind="options: Months, value: BMonth, optionsText: 'Name', optionsCaption: 'Select'"></select>/
                                <select name="BDay"     data-bind="options: Days, value: BDay, optionsText: 'Id',  optionsCaption: 'Select' "></select>
                                <select name="BYear" data-bind="options: Years, value: BYear, optionsText: 'Id', optionsCaption: 'Select'"></select>
                            </td><td> <label><input type="checkbox" data-bind="checked: Married">Married</label></td></tr>
        <tr><td><label>Interests</label></td><td colspan="3"><textarea data-bind="value: Interests" rows="10" cols="40"></textarea></td></tr>
    </tbody>

</article>

4

1 に答える 1

0

わかりました-答えについては、前述のフィドルを参照してください。私がしなければならなかったことは、値が期待どおりに表示されるようにするための 2 つのことでした。私は認めたくないほど長い間穴に落ちましたが、この教訓が他の誰かを助けることができることを願っています.

オブジェクトではなくIDを送信する必要がありました

            BDay: ko.observable(model.BDay),
            BMonth: ko.observable(model.BMonth),
            BYear: ko.observable(model.BYear),

BDay: ko.observable(model.Days[model.BDay])、BMonth: ko.observable(model.Months[model.BMonth])、BYear: ko.observable(model.Years[model.BYear])、会社: ko.observable(モデル.会社),

optionsValue: 'Id' を追加して、選択の HTML を更新する必要もありました。

お役に立てれば

于 2012-11-28T21:51:28.057 に答える