1

以下の簡略化されたコード。サーバーにヒットすることがわかります。しかし、変更をUIに戻すためのものを取得できません。

.html:

<div id="LoginPage" data-title="LoginPage" data-role="page" data-theme="a">
<div data-role="content" class="minimalPaddingContent">
    <div class="divDivider"></div>
    <h3>REACH Energy Audit Login</h3>

    <input type="text" placeholder="User Name" id="userName" data-bind="value: successOrFailureSw"/>
    <input type="password" placeholder="Password"  id="password"/>

    <a href="#" data-role="button" id="LoginSubmit" style="width:150px;" class="centeredButton" data-bind="click: changeValue">Sign In</a>
  <span data-bind="text: successOrFailureSw"></span>

</div>

.js:

var LoginViewModel = function (commonName, successOrFailureSw) {
    var self = this;

    self.commonName = ko.observable(commonName);
    self.successOrFailureSw = ko.observable(successOrFailureSw);



    self.changeValue = function(){
        console.log("changed!");
        self.successOrFailureSw = "new value!";
    }

};

ko.applyBindings(new LoginViewModel("", "super fail"));

マッピングが .html b/c で正しいと確信しています。元の値はスーパー フェイルとしてレンダリングされます。「successOrFailureSw」にマップされるテキスト ボックスの値を変更すると、span タグで更新された値が取得されます。 、しかし、ログインボタンのクリック時に効果の変化が得られません。

私は非常に単純なものが欠けていることを知っているので、事前にお詫び申し上げます。

ありがとう!

ブライアン

4

3 に答える 3

7

オブザーバブルに間違った方法で値を割り当てます。各オブザーバブルは関数であるため()、changeValue 関数を次のように変更して呼び出す必要があります。

self.changeValue = function(){
    console.log("changed!");
    self.successOrFailureSw("new value!");
}
于 2013-04-26T21:13:52.700 に答える
2

次のように値を設定する必要があります。

self.successOrFailureSw('new value!');

successOrFailureSw文字列ではありません。そのため、コードの前半で行ったのと同じ方法で設定する必要があります。

于 2013-04-26T21:12:18.200 に答える
1

これを試してください: self.successOrFailureSw("新しい値!")

于 2013-04-26T21:12:30.167 に答える