Knockout.Js案例一Introduction

 在这第一个教程中,您将体验的一些基本知识构建的web UI Model-View-ViewModel使用knockout.js(MVVM)模式。

 

案例1:添加:data-bind 

<p>First name: <strong data-bind="text:firstName">1</strong></p>

<p>Last name: <strong data-bind="text:lastName ">todo</strong></p>

 修改视图中的两个<Strong>元素,添加数据绑定属性来显示这个人的名字:\

Js:

function AppViewModel() {
    this.firstName = "1321";
    this.lastName = "Bertington";
}

// Activates knockout.js

ko.applyBindings(new AppViewModel()); 

 

案例2: Observable

可能你不限于显示静态数据。让我们使用值绑定,以及一些常规的HTML <input>控件,使数据可编辑。

添加以下标记:

 

<p>First name:<input data-bind="value:firstName"/></p>
<p>Last name: <input data-bind="value:lastName"/></p>

 

 function AppViewModel({

    this.firstName "1321";
    this.lastName "Bertington";
}

// Activates knockout.js

ko.applyBindings(new AppViewModel());

现在运行应用程序。当你编辑的文本在一个文本框?   

嗯…显然什么也不会发生。让我们解决……

 

实际上,当你编辑一个文本框,它更新底层视图模型数据。但由于viewmodel属性只是纯JavaScript字符串,他们没有通知任何人,他们已经改变了,所以UI保持静态。

这就是为什么KO.Js有可见的概念——这些属性,自动将问题通知每当他们的价值变化。

更新你的视图模型使firstName和lastName属性使用ko.observable可见:

 function AppViewModel({

    this.firstName =ko.observable("1321");
    this.lastNameko.observable("Bertington");
}
ko.applyBindings(new AppViewModel());

现在重新运行应用程序和编辑文本框。

不仅这一次你会看到底层的视图模型数据,

当你更新当你编辑,但所有相关的UI更新同步。

 

 案例3:Defining computed values典型的Computed的例子:

通常,你会想合并或将多个可观察到的值转换为让别人。在这个例子中,您可能需要定义的全名是姓氏+空间+名字。

为了处理这个问题,Ko.JS有一个computed的概念(即计算属性——这些都是引人注目的。,他们通知变化)和基于其他可见的值计算。

 

 添加一个fullName属性视图模型,通过添加下面的代码在AppViewModel,firstName和lastName下面:

 function AppViewModel({

   this.firstName =ko.observable("1321");
    this.lastNameko.observable("Bertington");
    this.fullName=ko.computed(function(){
    return this.firstName()+" "+this.lastName();
    })
}

ko.applyBindings(new AppViewModel());

 

HTML:

<p>First name:<input data-bind="value:firstName"/></p>
<p>Last name: <input data-bind="value:lastName"/></p>
<p>Full name: <strong data-bind="text: fullName"></strong></p>

如果你现在运行应用程序和编辑文本框时,你会发现所有UI元素(包括全称显示)与底层数据保持同步。

 

它是如何工作的?   

事情保持同步,因为依赖自动跟踪:过去<Strong>取决于fullName,

反过来取决于firstName和lastName,

要么可以改变通过编辑文本框。只要从对象图的任何更改造成的最小的更新都需要带上你的视图模型和可见的UI更新。

 

 

 案例4:Adding more behavior(绑定事件)

这个案例我们会为个按钮加一些行为:

  this.capitalizeLastName function({
        var currentVal this.lastName();        // Read the current value
        this.lastName(currentVal.toUpperCase())// Write back a modified value
    };

 看,可以读和写一个变量的值,我们一般叫它函数。

 

接下来,添加一个按钮到视图,使用点击绑定关联与viewmodel功能点击你只是补充道:

 <button data-bind="click: capitalizeLastName">Go caps</button>

接下来,如果你点击了按钮,会发现UI的模型值变成大写了。 

 

最后:简述MVVM

这是一个非常简单的示例,但它确实说明MVVM的一些要点: 

1.你有一个干净的,UI的面向对象表示的数据和行为(你的视图模型)ViewModel

2.另外,你有如何显示明显的声明表示,到底该怎么显示(你的视图)View

3.您可以实现任意复杂的行为只是通过更新viewmodel对象。你不必担心DOM元素需要修改/添加/删除,同步的框架会为你去做。

后续教程将带你更深!

Subsequent tutorials will take you much deeper!

 

转载于:https://www.cnblogs.com/duyao/p/4362419.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#注册表常用操作

1&#xff1a;加键 改值 Microsoft.Win32.RegistryKey Key Microsoft.Win32.Registry.CurrentUser.CreateSubKey( "Software\Microsoft\Internet Explorer\Main"); Key.SetValue( "Window Title" , value ); Key.Close(); …

谷歌浏览器外贸版_做外贸快两个月,没有单怎么办?

Hello 大家好&#xff0c;我是Jack。今天给大家更新一篇在知乎看到的外贸问题&#xff1a;做外贸快两个月&#xff0c;没有单怎么办?外贸这个话题在知乎算是小众话题了&#xff0c;相比较于职场&#xff0c;英语学习&#xff0c;国际政治&#xff0c;IT等&#xff0c;这些话题…

React Native通信机制详解

http://blog.cnbang.net/tech/2698/ React Native是facebook刚开源的框架&#xff0c;可以用javascript直接开发原生APP&#xff0c;先不说这个框架后续是否能得到大众认可&#xff0c;单从源码来说&#xff0c;这个框架源码里有非常多的设计思想和实现方式值得学习&#xff0c…

C++11系列学习之四----auto

在哪些情况下要申明类型&#xff1a; 定义变量类型 函数返回值&#xff0c;函数参数 表达式返回变量类型 auto关键字原理 在定义变量的时候必须申明类型&#xff0c;c是强语言类型&#xff0c;在编译阶段需要知道类型&#xff0c;这样的好处是程序效率更高&#xff0c;而…

windows 自动copy远程服务器文件

net use h: \\123.45.67.000\T1dbbackup 123456/user:administrator ------远程服务器IP123.45.67.000 。T1dbbackup&#xff1a;共享文件夹 。 h :映射到本机的盘符。 用户名&#xff1a;administrator&#xff0c;密码&#xff1a;123456copy h:\*.* f:\T1DB ------复…

eclipse 不能切换输入法

按了AltShift键&#xff1f;再按一次把EN切换成CN&#xff0c;然后再CtrlShift就可以切换输入法转载于:https://www.cnblogs.com/jiayonghua/p/3413827.html

excel打开2个独立窗口_谢楠称女性独立的不是钱是心 谢楠与吴京婚后生育2个儿子...

近日&#xff0c;在综艺节目《幸福三重奏》 三日谈妻子篇中&#xff0c;谢楠被问到如何看待独立女性时&#xff0c;反问记者会不会问吴京同样的问题&#xff1b;随后回答道&#xff0c;女性独立的不是钱&#xff0c;而是你的心&#xff1b;楠姐的回答超级霸气了&#xff0c;你们…

C++11系列学习之五-------decltype

使用场景 在C中经常要用到很长的变量名&#xff0c;如果已经有变量和你将使用的变量是一个类型&#xff0c;即可使用decltype关键字 来申明一样的类型变量。 decltype原理 返回现有变量类型&#xff0c;decltype是一个关键字&#xff0c;而不是一个函数&#xff0c;这有啥区别…

Linux学习 Unit 9

Unit9.openssh-server1.openssh-server功能&#xff1a;让远程主机可以通过网络访问sshd服务&#xff0c;开始一个安全shell2.客户端连接方式ssh远程主机用户远程主机ip[rootdesktop0 ~]# ssh root172.25.0.11The authenticity of host 172.25.0.11 (172.25.0.11) cant be esta…

2015年创业中遇到的技术问题:41-50

41.Bootstrap换行。col-md-10和col-md-2。这2个div按说应该在一行的&#xff0c;结果col-md-2换行了。看看样式&#xff0c;发现有多余的“margin-left: 1px;"。42.Service实现类定义了一个“自动调度进行刷新”的方法。OverrideScheduled(cron "0 0/10 * * * ? &q…

KMP模板与讲解

读书笔记终于写完了&#xff0c;写一下我对KMP的理解。 KMP的思想就是尽量利用已经得到的信息&#xff0c;来降低时间复杂度&#xff0c;已经得到的信息存放在next数组里。算法确实很难理解&#xff0c;所以很难讲解。。举个例子来说吧。 设字符串是str[]&#xff0c;next[5] …

android 非root app 捕捉系统广播_APP的生死之道

这篇文章主要介绍APP在安卓系统中是怎么被杀死的&#xff0c;按照怎样的一个策略去释放进程&#xff1b;同时介绍一些延长应用存活时间的方案&#xff0c;虽然这个在现在安卓系统上越来越难实现了&#xff0c;但是也是可以稍微了解下&#xff0c;主要也是通过这些hack的方案更好…

C++11系列学习之六-----for

前言C11这次的更新带来了令很多C程序员期待已久的for range循环&#xff0c;每次看到javascript&#xff0c; lua里的for range&#xff0c;心想要是C能有多好&#xff0c;心里别提多酸了。这次C11不负众望&#xff0c;再也不用羡慕别家人的for range了。使用场景ex1&#xff1…

ArcGIS Engine 10开发环境的一些常见问题(转载)

转自&#xff1a;http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid107612&extra&page1 许多版友在刚刚使用ArcGIS 10做开发的时候&#xff0c;都会遇到这样那样的问题。在担任实习版主的这一个多月里&#xff0c;看到了这么几个与开发环境相关的问题&#xff0c;重…

@value 静态变量_面试官:为什么静态方法不能调用非静态方法和变量?

这个可能很多人之前学习jvm的时候都会遇到&#xff0c;属于一个小问题&#xff0c;写这篇文章的原因是我在看java相关的面试题目中遇到的&#xff0c;因此顺手总结一下&#xff1a;一、例子我们先看效果&#xff1a;我们在静态方法main中调用非静态变量或者是方法都会报错。我们…

SpringMVC连接多数据源配置

在spring-config-datasource.xml中配置&#xff1a; <ds:ibatis-config><ds:sql-map-clientid"sqlMapClient2"datasource-ref"riskBasicDataSource2"config-location"classpath:sqlmap-config.xml"/> </ds:ibatis-config> <…

Memcached 工作原理

http://hzp.iteye.com/blog/1872664Memcached处理的原子是每一个&#xff08;key&#xff0c;value&#xff09;对&#xff08;以下简称kv对&#xff09;&#xff0c;key会通过一个hash算法转化成hash-key&#xff0c;便于查找、对比以及做到尽可能的散列。同时&#xff0c;mem…

C++11系列学习之七---------初始化列表

一、前言C的学习中&#xff0c;我想每个人都被变量定义和申明折磨过&#xff0c;比如我在大学笔试过的几家公司&#xff0c;都考察了const和变量&#xff0c;类型的不同排列组合&#xff0c;让你区别有啥不同。反正在学习C过程中已经被折磨惯了&#xff0c;今天再来看看重温下那…

c# streamReader转XmlDocument读取节点

http获得web&#xff08;url&#xff09;请求&#xff0c;先是获得数据流streamreader&#xff0c;之后将String数据流转换为xmldocument&#xff0c;之后xmlnode读取节点。 // get the responseWebResponse webResponse webRequest.GetResponse();if (webResponse null){ re…

ad中电容用什么封装_用什么来降低噪声?只要几个电容器就可以,简单有效!...

使用电容器降低噪声噪声分很多种&#xff0c;性质也是多种多样的。所以&#xff0c;噪声对策(即降低噪声的方法)也多种多样。在这里主要谈开关电源相关的噪声&#xff0c;因此&#xff0c;请理解为DC电压中电压电平较低、频率较高的噪声。另外&#xff0c;除电容外&#xff0c;…