twitter-bootstrap – 使用Knockout填充Bootstrap行和跨度

前端之家收集整理的这篇文章主要介绍了twitter-bootstrap – 使用Knockout填充Bootstrap行和跨度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
基本上我正在尝试通过Knockout和 JSON对象填充Bootstrap模板.

Bootstrap脚手架:

  1. <div class="row-fluid">
  2. <div class="span4">
  3. <h1>App Title</h1>
  4. <p>App Description</p>
  5. </div>
  6. <div class="span4">
  7. <h1>App Title</h1>
  8. <p>App Description</p>
  9. </div>
  10. <div class="span4">
  11. <h1>App Title</h1>
  12. <p>App Description</p>
  13. </div>
  14. </div>
  15. <div class="row-fluid">
  16. <div class="span4">
  17. <h1>App Title</h1>
  18. <p>App Description</p>
  19. </div>
  20. <div class="span4">
  21. <h1>App Title</h1>
  22. <p>App Description</p>
  23. </div>
  24. <div class="span4">
  25. <h1>App Title</h1>
  26. <p>App Description</p>
  27. </div>
  28. </div>
  29. ...

这是我们正在使用的Knockout代码

  1. var viewmodel;
  2.  
  3. $.get('AppData.json',function (data) {
  4. jsonData = $.parseJSON(data);
  5. viewmodel = ko.mapping.fromJS(jsonData);
  6. var apps = viewmodel.Apps();
  7. ko.applyBindings(viewmodel);
  8. });

问题是我无法让Knockout注入< / div>< div class =“row-fluid”>在以索引模3为条件运行淘汰赛后需要…我假设因为那些< div>标签悬空/未关闭.

简而言之,我如何让viewmodel.Apps();的对象数组适合上面的Bootstrap脚手架?

解决方法

创建一个计算的observable,它将apps observable / observable数组切成三个元素的数组,然后使用foreach绑定将一些根元素绑定到它.像这样的东西.

观察到:

  1. viewmodel.appRows = ko.computed(function() {
  2. var apps = this.Apps();
  3. var result = [];
  4. for (var i = 0; i < apps.length; i += 3) {
  5. var row = [];
  6. for (var j = 0; j < 3; ++j) {
  7. if (apps[i + j]) {
  8. row.push(apps[i + j]);
  9. }
  10. }
  11. result.push(row);
  12. }
  13. return result;
  14. },viewmodel);

标记

  1. <div class="container" data-bind="foreach: appRows">
  2. <div class="row-fluid" data-bind="foreach: $data">
  3. <div class="span4">
  4. <h1 data-bind="text: title"></h1>
  5. <p data-bind="text: description"></p>
  6. </div>
  7. </div>
  8. </div>

猜你在找的Bootstrap相关文章