首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何预选数据绑定引导选项卡

如何预选数据绑定引导选项卡
EN

Stack Overflow用户
提问于 2015-03-03 21:47:42
回答 2查看 1.3K关注 0票数 1

这个Durandal 2敲除标记生成具有适当内容的选项卡,但没有标签标记为active。

代码语言:javascript
复制
  <div id="editor" class="html-editor form-control" contenteditable="true" data-bind="html: Content"></div>
  <label>Questions</label>
  <div class="question-container navbar">
    <ul class="nav nav-tabs" id="Questions" data-bind="foreach: Questions">
      <li role="presentation">
        <a data-toggle="tab" data-bind="text: Caption, attr: { href: '#' + QuestionId }"></a>
      </li>
    </ul>
    <div class="tab-content Questions" data-bind="foreach: Questions">
      <div class="tab-pane well" data-bind="attr: { id: QuestionId }">
        <div class="html-editor form-control" contenteditable="true" data-bind="html: Question"></div>
        <div data-bind="foreach: Answers">
          <div class="input-group">
            <textarea class="form-control" data-bind="value: Caption"></textarea>
            <span class="input-group-addon">
              <input type="radio" aria-label="Correct answer" data-bind="checked:isCorrect" />
            </span>
          </div>
        </div>
      </div>
    </div>
 </div>&nbsp;

在静态标记中,可以通过用CSS类active标记初始活动选项卡来标识它。

当生成所有选项卡时,如何做到这一点?

这是Durandal 2,因此我可以处理attached并使用jQuery操作DOM。

推荐的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-03 22:35:03

在评论中聊天之后,这里终于是选择的方式

在引导文档中:http://getbootstrap.com/javascript/#tabs-usage

代码语言:javascript
复制
$('#myTab a:first').tab('show') 

其中myTab是包含选项卡的UL的标识符。

在这种情况下:

代码语言:javascript
复制
<ul class="nav nav-tabs" id="Questions" data-bind="foreach: Questions">
  <li role="presentation">
    <a data-toggle="tab" data-bind="attr: { href: '#' + QuestionId }">
      <span data-bind="text: Caption"></span>
      <span class="glyph-button" data-bind="click: deleteQuestion">
        <i class="fa fa-trash"></i>
      </span>
    </a>
  </li>
</ul>

以及Durandal activate处理程序的代码。这些代码中的大多数填充数据以进行绑定;它包括在内是为了帮助理解标记。在最后几行中,标签激活的奇迹发生了。

代码语言:javascript
复制
  for (var i = 0; i < result.InductionQAs.length; i++) {
    var question = {
      deleteQuestion: deleteQuestion,
      QuestionId: result.InductionQAs[i].InductionQAID,
      Question: ko.observable(result.InductionQAs[i].Question),
      Answers: ko.observableArray()
    };
    question.Caption = ko.computed(function () {
      var q = this.Question();
      var threshold = 20;
      return (q.length <= threshold) ? q : q.substring(0, threshold - 2) + "...";
    }, question);
    var answers = result.InductionQAs[i].Answers.split("|");
    for (var j = 0; j < answers.length; j++) {
      var a = answers[j];
      question.Answers.push({
        Caption: (a[0] == "*") ? a.substring(1) : a,
        isCorrect: a[0] == "*"
      });
    }
    vm.Questions.push(question);
  }
  setTimeout(function () {
    $("#Questions a:first").tab("show");
  }, 20);

setTimeout允许绑定在我们尝试操作DOM之前完成对DOM的修改。

票数 1
EN

Stack Overflow用户

发布于 2015-03-04 10:47:02

如果可能的话,您应该避免在视图模型中直接执行DOM操作。如果只想选择第一个选项卡,可以使用以下选项卡(未经测试):

代码语言:javascript
复制
<label>Questions</label>
  <div class="question-container navbar">
    <ul class="nav nav-tabs" id="Questions" data-bind="foreach: Questions">
      <li role="presentation">
        <a data-toggle="tab" data-bind="text: Caption, attr: { href: '#' + QuestionId }, css: {'active':  $index() === 1 }"></a>
      </li>
    </ul>
    <div class="tab-content Questions" data-bind="foreach: Questions">
      <div class="tab-pane well" data-bind="attr: { id: QuestionId }, css: {'active': $index() === 1 }">
        <div class="html-editor form-control" contenteditable="true" data-bind="html: Question"></div>
        <div data-bind="foreach: Answers">
          <div class="input-group">
            <textarea class="form-control" data-bind="value: Caption"></textarea>
            <span class="input-group-addon">
              <input type="radio" aria-label="Correct answer" data-bind="checked:isCorrect" />
            </span>
          </div>
        </div>
      </div>
    </div>
 </div>

或者,您可以在问题对象上创建一个属性,以确定它是否应该是活动的,并使用与上面相同的css绑定来绑定到该对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28842572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档