当前位置: 首页 > 编程笔记 >

KnockoutJS 3.X API 第四章之数据控制流with绑定

贺高杰
2023-03-14
本文向大家介绍KnockoutJS 3.X API 第四章之数据控制流with绑定,包括了KnockoutJS 3.X API 第四章之数据控制流with绑定的使用技巧和注意事项,需要的朋友参考一下

with绑定的目的

使用with绑定的格式为data-bind=”with:attribute”,使用with绑定会将其后所跟的属性看作一个新的上下文进行绑定。with绑定内部的所有元素将受到该上下文的约束。

当然,with绑定也可配合if或foreach绑定一起使用。

示例1

<h1 data-bind="text: city"> </h1>
<p data-bind="with: coords">
Latitude: <span data-bind="text: latitude"> </span>,
Longitude: <span data-bind="text: longitude"> </span>
</p>
<script type="text/javascript">
ko.applyBindings({
city: "London",
coords: {
latitude: 51.5001524,
longitude: -0.1262362
}
});
</script>

本例中,通过with直接绑定了coords监控属性,并在其内部直接调用了coords监控属性的内部属性。这里就体现了with绑定的特性。

示例2:一个互动的例子

该例子中将使用with绑定动态添加和删除其绑定值为null/undefined或非null/undefined

UI源码:

<form data-bind="submit: getTweets">
Twitter account:
<input data-bind="value: twitterName" />
<button type="submit">Get tweets</button>
</form>
<div data-bind="with: resultData">
<h3>Recent tweets fetched at <span data-bind="text: retrievalDate"> </span></h3>
<ol data-bind="foreach: topTweets">
<li data-bind="text: text"></li>
</ol>
<button data-bind="click: $parent.clearResults">Clear tweets</button>
</div>

视图模型源码:

function AppViewModel() {
var self = this;
self.twitterName = ko.observable('@example');
self.resultData = ko.observable(); // No initial value
self.getTweets = function() {
var name = self.twitterName(),
simulatedResults = [
{ text: name + ' What a nice day.' },
{ text: name + ' Building some cool apps.' },
{ text: name + ' Just saw a famous celebrity eating lard. Yum.' }
];
self.resultData({ retrievalDate: new Date(), topTweets: simulatedResults });
}
self.clearResults = function() {
self.resultData(undefined);
}
}
ko.applyBindings(new AppViewModel());

备注:with的无容器绑定(虚拟绑定)

像if、foreach等的虚拟绑定一样,with绑定也一样。使用<!-- ko -->和<!-- /ko -->进行。

<ul>
<li>Header element</li>
<!-- ko with: outboundFlight -->
...
<!-- /ko -->
<!-- ko with: inboundFlight -->
...
<!-- /ko -->
</ul>

以上所述是小编给大家介绍的KnockoutJS 3.X API 第四章之数据控制流with绑定,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 本文向大家介绍KnockoutJS 3.X API 第四章之数据控制流foreach绑定,包括了KnockoutJS 3.X API 第四章之数据控制流foreach绑定的使用技巧和注意事项,需要的朋友参考一下 foreach绑定 foreach绑定主要用于循环展示监控数组属性中的每一个元素,一般用于table标签中 假设你有一个监控属性数组,每当您添加,删除或重新排序数组项时,绑定将有效地更新U

  • 本文向大家介绍KnockoutJS 3.X API 第四章之数据控制流component绑定,包括了KnockoutJS 3.X API 第四章之数据控制流component绑定的使用技巧和注意事项,需要的朋友参考一下 一个例子 UI源码: 视图模型源码: 这只是一个非常简单的例子,在开发中,一般都是将View Model和Template写成单独外部文件,然后通过ko的components.re

  • 本文向大家介绍KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定,包括了KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定的使用技巧和注意事项,需要的朋友参考一下 if绑定目的 if绑定一般是格式是data-bind=if:attribute,if后所跟属性或表达式的值应为bool值(也可以是非bool值,当非空字符串时则为真),if绑定

  • 如果你写过任何数量相当的JavaScript,这就不是什么秘密:异步编程是一种必须的技能。管理异步的主要机制曾经是函数回调。 然而,ES6增加了一种新特性:Promise,来帮助你解决仅使用回调来管理异步的重大缺陷。另外,我们可以重温generator(前一章中提到的)来看看一种将两者组合的模式,它是JavaScript中异步流程控制编程向前迈出的重要一步。 Promises 让我们辨明一些误解:

  • 虽然剧透可耻,但是为了体现Go语言的设计简洁之处,必须要先剧透一下。 Go语言的控制结构关键字只有 if..else if..else,for 和 switch。 而且在Go中,为了避免格式化战争,对程序结构做了统一的强制的规定。看下下面的例子。 请比较一下A程序和B程序的不同之处。 A程序 package main import ( "fmt" ) func main() { f

  • 2.2 节介绍过 Common Lisp 的求值规则,现在你应该很熟悉了。本章的操作符都有一个共同点,就是它们都违反了求值规则。这些操作符让你决定在程序当中何时要求值。如果普通的函数调用是 Lisp 程序的树叶的话,那这些操作符就是连结树叶的树枝。 5.1 区块 (Blocks) Common Lisp 有三个构造区块(block)的基本操作符: progn 、 block 以及 tagbody