2014-01-03 2 views
0

Мои наблюдаемые «назначенные ветви» содержат объекты при запуске этой страницы. Но тот, который привязывает 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)"}]

+0

Мой код начинался таким образом, но я продолжал получать ошибку «Объект наблюдаемый не имеет никакого метода« push ». Как я уже сказал, наблюдаемый массив IS LOADING отлично. Но foreach, похоже, не хочет подбирать ценности. Я даже использовал плагин отладчика Knockout для Chrome, и мой наблюдаемый массив заполнен правильными объектами. – oakfish56

+2

Ваш код работает надписью: 'me.assignedbranches.push (new branchAssignment (val));' ... вы можете увидеть его здесь: http://jsfiddle.net/Ljpww/ – nemesv

+0

Хмммм ... Спасибо, nemesv , Интересно, есть ли у меня какие-то конфликтующие js. Я не вижу ошибок, но ... – oakfish56

ответ

1

Try:

me.assignedbranches.push(new branchAssignment(val)); 

вместо:

me.assignedbranches().push(new branchAssignment(val)); 
+0

Нет, извините, что ошибки для меня (не знаю почему). См. Комментарии в исходном сообщении. Спасибо хоть. – oakfish56

+0

После того, как nemesv сделал скрипку http://jsfiddle.net/Ljpww, я попытаюсь посмотреть, могу ли я принять этот ответ. BRB ... – oakfish56