ここで何が問題なのかはわかりませんが、KnockoutJS は my 内にある監視可能な配列を見つける際にいくつかの問題を抱えていMasterViewModel
ます。私の最初の KJS アプリではなく、2.2.1
jQueryでの使用。1.8.x
ここにあります:
初期化する
$(function() {
window.vm = new MasterViewModel();
ko.applyBindings(vm);
});
ビューモデル
function MasterViewModel(data) {
var self = this;
self.currentAppView = ko.observable();
// Users
self.userList = ko.observableArray([]);
self.templateListGetter = ko.computed(function() {
$.getJSON("/user/list"), function(data) {
var mapped = $.map(data, function(item) { return new userModel(item) });
self.userList(mapped);
};
});
self.goToAppView = function(appView) {
location.hash = '!/' + appView;
};
Sammy(function() {
this.get('#!/:appView', function() {
self.currentAppView(this.params.appView);
$('.appview').hide();
ko.applyBindings(new window[this.params.appView+'VM']());
});
this.notFound = function(){
location.hash = "!/dashboard";
}
//this.raise_errors = true;
}).run();
}
景色
<table class="table table-bordered table-striped">
<tbody data-bind="foreach: userList">
<tr>
<td data-bind="text: guid"></td>
<td data-bind="text: firstName"></td>
<td data-bind="text: lastName"></td>
<td data-bind="text: email"></td>
<td data-bind="text: updated"></td>
<td data-bind="text: suspended"></td>
</tr>
</tbody>
</table>
ロードしている単純なテーブルがあります
defer="defer"
JS タグへの追加やuserList
存在の確認など、いくつかのことを再確認した後でも、observableArray が見つかりません。エラーが発生します:
Message: ReferenceError: userList is not defined;
Bindings value: foreach: userList Error {}
誰が何が起こっているのか知っていますか?
アップデート
ハッシュが変更されるたびに何が呼び出されるのか疑問に思っている人のために:
function usersVM() {
// Data
var self = this;
// Behaviours
$('#users').show();
}