使用 knockoutjs + twitter bootstrap 跟踪标签

2024-01-26

我试图跟踪视图模型中选定的选项卡,但我似乎无法使其工作。

在以下代码中,当您单击选项卡时,标题将正确更新,但不会显示选项卡的内容。如果您删除, click: $parent.selectSection然后显示内容但标题不会更新。

现在如果你删除data-bind="css: { active: selected }"来自li那么当您单击选项卡时它似乎可以工作,但选择第二个选项卡的按钮却不起作用。

我怎样才能做到这一点?

See: http://jsfiddle.net/5PgE2/3/ http://jsfiddle.net/5PgE2/3/

HTML:

<h3>
    <span>Selected: </span>
    <span data-bind="text: selectedSection().name" />
</h3>
<div class="tabbable">
    <ul class="nav nav-tabs" data-bind="foreach: sections">
        <li data-bind="css: { active: selected }">
            <a data-bind="attr: { href: '#tab' + name }
, click: $parent.selectSection" data-toggle="tab">
                <span data-bind="text: name" />
            </a>
        </li>
    </ul>
    <div class="tab-content" data-bind="foreach: sections">
        <div class="tab-pane" data-bind="attr: { id: 'tab' + name }">
            <span data-bind="text: 'In section: ' + name" />
        </div>
    </div>
</div>
<button data-bind="click: selectTwo">Select tab Two</button>

JS:

var Section = function (name) {
    this.name = name;
    this.selected = ko.observable(false);
}

var ViewModel = function () {
    var self = this;
    self.sections = ko.observableArray([new Section('One'),
    new Section('Two'),
    new Section('Three')]);
    self.selectedSection = ko.observable(new Section(''));
    self.selectSection = function (s) {
        self.selectedSection().selected(false);

        self.selectedSection(s);
        self.selectedSection().selected(true);
    }

    self.selectTwo = function() { self.selectSection(self.sections()[1]); }
}

ko.applyBindings(new ViewModel());

有几种方法可以处理这个问题,要么使用 bootstrap 的 JS,要么让 Knockout 添加/删除active class.

为了仅使用 Knockout 来做到这一点,这里有一种解决方案,其中部分本身有一个计算来确定它当前是否被选择。

var Section = function (name, selected) {
    this.name = name;
    this.isSelected = ko.computed(function() {
       return this === selected();  
    }, this);
}

var ViewModel = function () {
    var self = this;

    self.selectedSection = ko.observable();

    self.sections = ko.observableArray([
        new Section('One', self.selectedSection),
        new Section('Two', self.selectedSection),
        new Section('Three', self.selectedSection)
    ]);

    //inialize to the first section
    self.selectedSection(self.sections()[0]);
}

ko.applyBindings(new ViewModel());

标记看起来像:

<div class="tabbable">
    <ul class="nav nav-tabs" data-bind="foreach: sections">
        <li data-bind="css: { active: isSelected }">
            <a href="#" data-bind="click: $parent.selectedSection">
                <span data-bind="text: name" />
            </a>
        </li>
    </ul>
    <div class="tab-content" data-bind="foreach: sections">
        <div class="tab-pane" data-bind="css: { active: isSelected }">
            <span data-bind="text: 'In section: ' + name" />
        </div>
    </div>
</div>

示例在这里:http://jsfiddle.net/rniemeyer/cGMTV/ http://jsfiddle.net/rniemeyer/cGMTV/

您可以使用多种变体,但我认为这是一种简单的方法。

这是一个调整,其中活动选项卡使用部分名称作为模板:http://jsfiddle.net/rniemeyer/wbtvM/ http://jsfiddle.net/rniemeyer/wbtvM/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 knockoutjs + twitter bootstrap 跟踪标签 的相关文章

  • 如何使用 jQuery 将各种元素包装在 div 标签中?

    我有一个 html 结构 如下所示 h5 Title h5 p Content p ul li Item li li Item li ul p Content p h5 Title h5 p Content p ul li Item li
  • 在java中将DataURL图像转换为图像文件

    我在我的 java servlet 中接收图像 DataURL 它看起来像 data image jpeg base64 9j 4AAQSkZJRgABAQAAAQABAA 我需要将其另存为图像文件 我该怎么做 The simplest w
  • 加载新的 Turbo Frame 时如何执行 JavaScript

    我在 Rails 应用程序中使用 Turbo Frames 并且在每个页面上都有
  • 更改 Angular 模型以更新 Kendo

    我一直在一个项目中使用 Angular 最近才发现 Kendo Angular 项目位于http kendo labs github io angular kendo http kendo labs github io angular ke
  • html5 vs flash - 完整的比较图表在哪里? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 因此 自从史蒂夫 乔布斯说 Flash 很糟糕并暗示 HTML5 可以完成 Flash 可以做的所有事情
  • 输入元素可滚动并启用文本溢出省略号

    当我添加text overflow ellipsis对于输入元素 该元素是可滚动的 当我将光标放在元素上时 我可以左右滚动 就好像文本是全宽并且没有被截断一样 尽管后面没有文本 我该如何阻止这种行为 input width 180px te
  • 是否有 IE 渲染完成事件?

    在尝试确定页面加载时间为 20 秒的原因时 我发现 IE8 中有一些奇怪的行为 场景是这样的 我进行 ajax 调用 它返回并且回调看起来像这样 StoreDetailsContainer html tableHtml var StoreD
  • Javascript 清理:插入可能的 XSS html 字符串的最安全方法

    目前我正在将此方法与 jQuery 解决方案结合使用 以清除字符串中可能的 XSS 攻击 sanitize function str return htmlentities str ENT QUOTES return div div tex
  • 适用于 HTML5 混合应用程序的 CORS

    我读过很多关于 CORS 的文章 以及允许 Access Control Allow Origin 如何成为 Web 服务器的安全漏洞 但没有一篇文章解释了如何允许 HTML5 混合应用程序访问某些不允许使用通配符 的域上托管的 Web 服
  • 有什么简单的方法可以清理 Google Maps v3 API 上的所有标记、折线和其他叠加层吗?

    我想获得一张新地图 而不是使用刷新网页 thanks 并有简单的方法来获取地图上的所有叠加层 在 v2 API 中 有clearOverlays http code google com apis maps documentation ja
  • 解析 PHP 响应:未捕获的语法错误:意外的标记 <

    我正在使用 AJAX 来调用 PHP 脚本 我唯一需要从响应中解析的是脚本生成的随机 ID 问题是 PHP 脚本会引发许多错误 这些错误实际上很好 不会妨碍程序功能 唯一的问题是当我跑步时 parseJSON response I get
  • 谷歌地图API v3如何获取所有形状的坐标

    我有这个谷歌脚本 可以创建形状和删除形状 但没有太多关于保存形状的信息 我查了一下互联网 知道我可以通过 overlaycomplete 中的 getpaths 访问路径坐标 而且我还可以将坐标推入一个收集所有形状的数组中 但是 如果用户删
  • 变量值的 swap() 函数[重复]

    这个问题在这里已经有答案了 我无法达到下面这个交换函数的预期结果 我希望将值打印为 3 2 function swap x y var t x x y y t console log swap 2 3 任何线索将不胜感激 您的函数正在内部交
  • 创建响应式眼睛焦点图标

    我一直在尝试制作响应式彩色眼睛焦点图标 但到目前为止我所尝试的一切均不成功 我试图在某种程度上复制真眼的颜色 我使用边框 框阴影来获取颜色 但该部分没有缩放 也尝试过轮廓 但也失败了 那个甚至不是圆的 div 的高度当前是静态的 但我希望它
  • Electron Auth0Lock“原始文件://不允许”

    尝试让 auth0 与我的电子应用程序一起使用 当我按照默认教程并尝试使用用户名 密码 身份验证进行身份验证时 锁定失败并显示 403 错误 并响应 不允许使用 Origin file 我还在 auth0 仪表板中客户端设置的允许来源 CO
  • HTML 布局:向现有网站添加侧边栏

    我有一个网站 其正文如下所示 div div div div div div 这些中没有使用绝对 相对定位技巧divs 但是有很多floats clears margins and padding这些风格divs 及其内部元素 所有这些都会
  • (A == B == C) 比较在 JavaScript 中如何工作?

    我预计以下比较会给出错误 var A B 0 if A B 0 console log true else console log false 但奇怪的是它又回来了false 更奇怪的是 console log A B 1 returns
  • 如何防止IE11弹出(您确定要离开此页面)

    我正在处理一个页面 除了一个下拉菜单可供选择外 我无需输入任何内容 但在 IE11 中 当我尝试转到下一页时 它会弹出该消息 我想阻止这种弹出的发生 所以我只是想知道 IE11 中弹出窗口的默认行为是什么 因为它不会出现在 Chrome 或
  • 查看元素的所有 dom 事件

    我有一个 jQuery UI 日期选择器 当您单击日期时 它会清除我的 URL 哈希值 并且不会更改文本框中的日期 我假设某个地方还有其他一些 JavaScript 实用程序 它也正在调用某种委托事件 抛出错误并终止 jquery 处理程序
  • 如何在jsp页面中包含javascript

    我是 J2EE 和 Web 开发的新手 这是我的问题 我想在网页中包含 angular js 这是有效的版本 但我也想要一些本地的 javascript 文件 并且希望我想在本地目录中导入 angularjs

随机推荐

  • 连接 PhoneGap 与 localhost Web 服务

    我在连接我的 webserwisem PhoneGap Django TastyPie 时遇到问题 我的 PhoneGap 版本 3 3 0 使用纯 html 调用 POST 或 GET 一切正常当我将项目移动到模拟器时问题就开始了 传输无
  • for 循环 vs while 循环 vs foreach 循环 PHP

    首先我是 PHP 新手 我一直在脚本中使用 for 循环 while 循环 foreach 循环 我想知道 哪一个性能更好 选择循环的标准是什么 当我们在另一个循环中循环时应该使用哪个 我一直想知道要使用哪个循环的代码 for i 0 i
  • PHP:调用未定义函数 mb_strlen() - 在启用 mbstring 的自定义编译 PHP 上

    我有这个自定义编译的 PHP v5 3 3 并启用了以下扩展 通过配置 configure prefix usr local php5 3 3 with config file path usr local apache2 conf wit
  • Facebook JS SDK 可以与 Phonegap / Cordova 一起使用吗?

    我有 Senscha 2 0 移动应用程序 我想使用最新的phonegap cordova 构建它 我想添加 Facebook 登录功能 我找到了三个选择 使用ChildBrowser方法 使用应用内浏览器 使用cordova facebo
  • 如何迭代 PostgreSQL jsonb 数组值以在查询中进行匹配

    我的表有很多行 每行都包含一个 jsonb 对象 该对象保存一个数组 其中可能有多个同名但具有不同值的键 我的目标是扫描整个表并验证哪些行在此 json 对象的数组中包含重复值 第 1 行示例数据 Name Bobb Smith Ident
  • javac -parameters 标志的缺点

    我想尝试一些在运行时需要参数名称的框架功能 因此我需要使用以下命令来编译我的应用程序 parameters它将参数的名称存储在 JVM 字节码中 除了jar war的大小之外 该参数的使用还有哪些缺点 将参数名称添加到类文件格式的内容包含在
  • 在 javascript/jquery 中将 base64 转换为图像

    我已经编写了一些使用 javascript jquery 进行图像捕获的代码 下面是代码 function capture image alert capture image var p webcam capture webcam save
  • PHP函数获取数组的前5个值[重复]

    这个问题在这里已经有答案了 Array university gt 57 iit gt 57 jee gt 44 application gt 28 study gt 26 college gt 23 exam gt 19 colleges
  • scons 知道 SConscript 文件位于哪个目录吗?

    我们正在评估 scons 作为构建系统 但我在适应我们的旧系统时遇到了问题 在我们的一些源代码子目录中 我们有一个 sources lib 文件 其中列出了需要编译以组装该目录的目标库的 C 文件的名称 但是 同一目录中还有其他 C 文件
  • 如何将 AutoMapper 与 Ninject.Web.Mvc 结合使用?

    Setup 我有一个AutoMapperConfiguration设置 AutoMapper 映射的静态类 static class AutoMapperConfiguration internal static void SetupMap
  • 将节注入 GNU ld 脚本; binutils 版本之间的脚本兼容性。

    我正在构建类似问题中的东西如何将不同 a 文件中的数据收集到一个数组中 如何使用 ld 脚本保留 a 文件中的部分 https stackoverflow com questions 6568844 how to collect data
  • 从 Fontawesome 导入所有图标

    我在我的 Angular 项目中以这种方式使用 Fontawesome 5 import fontawesome from fortawesome fontawesome import faBold faItalic faUnderline
  • 无论文本长度如何,如何在标签和输入字段之间均匀添加空格?

    假设我有 10 个输入字段 在左侧的输入字段之前有一个 span 标签 它包含文本以指示用户应在字段中输入什么内容 我做了一些事情 但我不确定如何在跨度标签和输入字段之间添加空格 无论文本有多大 像这样 2019年答案 一段时间过去了 我现
  • 如何让 Maven 插件在依赖解析之前运行

    之前有一个答案 但我不认为接受的答案是正确的 https stackoverflow com questions 6120227 how to run maven plugin before dependency check 我创建了一个
  • C# 中的重载除法

    我想在我的 C 类中重载除法运算符 所以 我写道 public string operator object obj 并得到错误 解析器错误 可重载一元运算符除外 那么 我不能重载该运算符吗 在 MSDN 上我没有看到任何示例 http m
  • 仅使用 SameSite Lax cookie 进行 SSO 的可行性?

    背景 我正在考虑实施方面SameSite今天我的饼干 我已经有了HttpOnly and Secure所以我想这可能没什么大不了的 为什么它坏了 好吧 事实证明 一旦我实现了这个设置 很多东西就坏了 两者都发生了这种情况SameSite L
  • C# Selenium:ICabling 不再包含 BrowserName 的定义

    更新到 Selenium 3 14 0 后 BrowserName 属性不再是 ICapativity API 的一部分 还有其他方法获取浏览器名称吗 我找不到更新的文档 这是预期的行为吗 这是一个针对 NET Core 2 1 的测试套件
  • 如何在 Django 中翻译 url?

    这是我的django project下面将其从英语翻译成法语 我用姜戈4 2 1 django project core settings py urls py my app1 views py urls py my app2 locale
  • 单击按钮后在 html id 中插入文本(无 JavaScript)

    我想在按下按钮后在文本框 ID button3 中包含一些文本 我有以下 html div style display none span text before pressing the button gt span div 在 java
  • 使用 knockoutjs + twitter bootstrap 跟踪标签

    我试图跟踪视图模型中选定的选项卡 但我似乎无法使其工作 在以下代码中 当您单击选项卡时 标题将正确更新 但不会显示选项卡的内容 如果您删除 click parent selectSection然后显示内容但标题不会更新 现在如果你删除dat