1

ブートストラップJavaScriptボタンのテキストを更新して、ビューモデルで観察可能なノックアウトに保持されている番号を表示したいと思います。

ボタンのテキストをオブザーバブル以外のものに更新できます。オブザーバブルを含むように変更すると、ボタンのテキストが正しくなく、オブザーバブルが関数として表示されます。

フィドルで説明する方が簡単なので、簡単な例を次に示します。http: //jsfiddle.net/rswailes/JxHwy/

HTML

<button
    id="download-file"
    data-loading-text="Updating totals..."
    data-bind="attr: {'data-complete-text' : 'Download lines: '+total , 
                      'data-finished-text' : 'done' }"
    autocomplete="off"
    class="btn btn-small download-file"
    type="button">Download file</button>

<p>
Total: <span data-bind="text: total"></span>
</p>

JAVASCRIPT

var ViewModel = function(){
    var self = this;
    this.total = ko.observable();

    this.loadModel = function(){
        $('#download-file').button("loading");
        this.total(10);
        $('#download-file').button("complete");   // this is the line I would like to work but does not work
        //$('#download-file').button("finished"); // if you uncomment this line you will see this line works fine
    };
};


viewModel = new ViewModel();
ko.applyBindings(viewModel);
viewModel.loadModel();

なぜこれが起こっているのか、そして私がやりたいことが可能かどうか誰かに教えてもらえますか?

編集:私はtotal()以下に提案されているように試しました、そして私Download lines: undefinedはボタンに「」を取得します。

4

2 に答える 2

0

observableの値を取得するには、のような関数として呼び出す必要がありますtotal()

のような単純なプロパティ/observableを渡すだけの場合、組み込みのバインディングがこれを処理しますtotal。ただし、式で使用する場合は、次のような関数として呼び出す必要があります。"Download lines: " + total()

于 2013-03-11T17:52:53.483 に答える
0

total()観測可能な変数の値にアクセスするために使用する必要があります。また、コードを更新し、クリックバインディングを使用してモデルデータを読み込む必要があります。これが実用的なフィドルです:

http://jsfiddle.net/JxHwy/3/

于 2013-03-11T18:06:35.170 に答える