1

Knockout.js の複数の ViewModel で問題が発生しました。バインディングは機能しますが、ユーザー監視可能なテキストを表示する必要があるメッセージ ボックスが表示されると、常に「未定義」と表示されます。

私の問題を知っている人はいますか?

<!-- ko template: { 'if': loginVM, data: loginVM } -->
    <h3>This is the login</h3>

    User <input type="value: user" type="text"><br/>
    Password <input type="value: password" type="text"><br/>
    <button data-bind="click: showDetails">Show Details</button>
<!-- /ko -->

<!-- ko template: { 'if': detailsVM, data: detailsVM } -->
    <h1>These are the details</h1>
    <button data-bind="click: showLogin">Show Login</button>
<!-- /ko -->

    var masterViewModel = {
        loginVM: ko.observable(),
        detailsVM: ko.observable()
    };

    var LoginVM = function () {
        this.user=ko.observable();
        this.password= ko.observable();
        this.showDetails = function () {
            alert(this.user());
            if(this.user() == "Gregor")
            {
                 masterViewModel.loginVM(null);
                 masterViewModel.detailsVM(new DetailsVM());
            }

        };
    };

    var DetailsVM = function () {
        this.showLogin = function () {
            masterViewModel.loginVM(new LoginVM());
            masterViewModel.detailsVM(null);
        };
    };

    masterViewModel.loginVM(new LoginVM()); 

    ko.applyBindings(masterViewModel);​

ここにも js.fiddle があります: http://jsfiddle.net/4A87x/1/

4

1 に答える 1

0

バインディングにタイプミスがあります。する必要があります:

User <input data-bind="value: user" type="text"><br/>
Password <input data-bind="value: password" type="text"><br/>

ワーキングフィドル:

http://jsfiddle.net/4A87x/3/

于 2012-12-12T08:05:36.237 に答える