0

KnockOut JS を使用して DataGrid と Pager を作成しています。

ページャーは次のようになります。

<ul class="grdPager" data-bind="foreach: new Array(StudentGridSettings().totalPages)">
    <li><a href='#' data-bind="click: function() {TurnStudentListPage($index()+1)}, text: ($index()+1), style: { color : ($index()+1) == StudentGridSettings().pageIndex ? 'black' :'blue'} "></a></li>
</ul>

Dashboard.TurnStudentListPage(i) は、Dashboard.StudentGridSettings().pageIndex の値を変更する関数です。他のすべては正常に動作します。ただし、ページが変わってもリンクの色は変わりません。pageIndex が変更されても、最初の li だけが黒色になり、残りは青色のままです。

前もって感謝します。

4

1 に答える 1

1

オブザーバブル KO 内のプロパティの値を変更しても通知されません。したがって、KOStudentGridSettingsを記述した場合にオブザーバブルであっても、が変更されたことを認識しないため、バインディングは更新されません。StudentGridSettings().pageIndex = somethingStudentGridSettings

メソッドでバインディングをトリガーできるため、次のようvalueHasMutatedに変更する必要があります。TurnStudentListPage

self.TurnStudentListPage = function(index){
    self.StudentGridSettings().pageIndex = index; 
    self.StudentGridSettings.valueHasMutated();
}

JSFiddleのデモ。

pageIndexまたは、プロパティを として宣言ko.observableし、バインディングで使用します。

data-bind="style: { color : ($index()+1) == StudentGridSettings().pageIndex() ? 'black' :'blue'}"

JSFiddleのデモ。

于 2013-09-19T10:16:07.133 に答える