Мои наблюдаемые «назначенные ветви» содержат объекты при запуске этой страницы. Но тот, который привязывает foreach к массиву, полностью пуст. Зачем?Knockout foreach binding не работает для меня
var branchAssignment = function (data) {
this.branchNumber = data.BranchNumber;
this.branchName = data.BranchName;
this.branchlabel = data.BranchLabel;
}
var AppViewModel = function() {
var me = this;
me.assignedbranches = ko.observableArray([]);
me.LoadBranchAssignments = function() {
$.getJSON("api/branchassignments", function (data) {
var sorted = _.sortBy(data, function (b) {
return b.BranchName;
});
$.each(sorted, function (key, val) {
me.assignedbranches().push(new branchAssignment(val));
});
});
};
me.selectBranch = function (data, e) {
console.log(data);
};
me.selectedBranch = ko.observable("Baton Rouge (4001)");
};
var appv = new AppViewModel;
ko.applyBindings(appv);
HTML
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown"><span data-bind="text: selectedBranch()"></span> <b class="caret"></b></a>
<ul class="dropdown-menu" data-bind="foreach: assignedbranches ">
<li>
<a href="javascript:;" data-bind="text: branchlabel"></a>
</li>
</ul>
</li>
</ul>
ОБРАЗЕЦ branchAssignment объекты [{ "branchNumber": "4042", "branchName": "Альбукерке", "branchlabel": "Альбукерке (4042)"}, { «branchNumber»: «4006», «branchName»: «Alexandria», «branchlabel»: «Александрия (4006)»}, {«branchNumber»: «1118», «branchName»: «Arden», «branchlabel»: Arden (1118) "}, {" branchNumber ":" 1113 "," branchName ":" Ashland "," branchlabel ":" Ashland (1113) "}, {" branchNumber ":" 4019 "," branchName ":" Атланта "," branchlabel ":" Atlanta (4019) "}, {" branchNumber ":" 4030 "," branchName ":" Austin "," branchlabel ":" Austin (4030) "}, {" branchNumber ":" 1054" , "branchName": "Bakersfield", "branchlabel": "Bakersfield (1054)"}, {"branchNumber": "1115", "branchName": "Балтимор", "branchlabel": "Балтимор (1115)"} { "branchNumber": "4001", "branchName": "Батон Руж", "branchlabel": "Батон-Руж (4001)"}]
Мой код начинался таким образом, но я продолжал получать ошибку «Объект наблюдаемый не имеет никакого метода« push ». Как я уже сказал, наблюдаемый массив IS LOADING отлично. Но foreach, похоже, не хочет подбирать ценности. Я даже использовал плагин отладчика Knockout для Chrome, и мой наблюдаемый массив заполнен правильными объектами. – oakfish56
Ваш код работает надписью: 'me.assignedbranches.push (new branchAssignment (val));' ... вы можете увидеть его здесь: http://jsfiddle.net/Ljpww/ – nemesv
Хмммм ... Спасибо, nemesv , Интересно, есть ли у меня какие-то конфликтующие js. Я не вижу ошибок, но ... – oakfish56