2012-03-02 13 views
1

KnockoutJSで足を濡らし始めました。これまでのところ、私は次のようしている:いくつかの基本的なKnockoutJSに問題がありました

HTML:

<b>Selected:</b> <span data-bind="text: selectedName" ></span> 
<div data-bind="foreach: matches"> 
    <div data-bind="click: $root.SelectMatch" > 
     <strong data-bind="text: Name" ></strong> 
     <span data-bind="text: Age"></span> 
     <span data-bind="text: Citizenship"></span> 
    </div> 
</div> 

Javascriptを:

function TestViewModel() { 
    var self = this; 
    self.matches = ko.observableArray([ 
     { Name: 'Rodd Chin', Age: '42', Citizenship: 'American' }, 
     { Name: 'Ben Challinor', Age: '30', Citizenship: 'Russian'}, 
     { Name: 'Andrew Harris', Age: '35', Citizenship: 'Canadian' } 
     ]); 
    self.selectedItem = ko.observable(); 
    self.selectedName = ko.observable("[Empty]"); 
    self.SelectMatch = function (match) { 
     self.selectedItem = match; 
     self.selectedName = match.Name; 
    }; 
} 
ko.applyBindings(new TestViewModel()); 

これをすべて、最初のspanタグの結合selectedNameため以外を動作するようです。何らかの理由でそれが更新されることはありません。私はself.selectedItem.Nameを返すvmにko.computed()プロパティを追加しようとしましたが、それにバインドしても動作しませんでした。

私が間違っている可能性のあるアイデアはありますか?助けてくれてありがとう!

self.myObservable(newValue); 

これは持っている:

答えて

5

それはあなたがあなたはこのようなそれを設定する必要があります。この

self.myObservable = newValue; 

のような値を割り当てないべきで観察できるの値を設定するために、簡単です観察可能なオブジェクトを自身のオブジェクトとすること、それをサブスクリプションとそのようなものを維持しなければなりません。

+0

ありがとうございます! spanタグのバインディングも 'text:selectedItem()。Name'のように変更しました。 – RHarris

関連する問題