返回顶部
首页 > 资讯 > 精选 >JavaScript的MVVM库怎么使用
  • 358
分享到

JavaScript的MVVM库怎么使用

2023-07-04 09:07:26 358人浏览 独家记忆
摘要

本篇内容介绍了“javascript的MVVM库怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、v-bind 缩写<!--&

本篇内容介绍了“javascript的MVVM库怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、v-bind 缩写

<!-- 完整语法 --><a v-bind:href="url"></a><!-- 缩写 --><a :href="url"></a><!-- 完整语法 --><button v-bind:disabled="someDynamicCondition">Button</button><!-- 缩写 --><button :disabled="someDynamicCondition">Button</button>

二、v-on 缩写

<!-- 完整语法 --><a v-on:click="doSomething"></a><!-- 缩写 --><a @click="doSomething"></a>

三、过滤器

{{ message | capitalize }}

四、条件渲染

v-if<h2 v-if="ok">Yes</h2><h2 v-else>No</h2><div v-if="Math.random() > 0.5"> Sorry</div><div v-else> Not sorry</div>template-v-if<template v-if="ok"> <h2>Title</h2> <p>Paragraph 1</p> <p>Paragraph 2</p></template>v-show<h2 v-show="ok">Hello!</h2>

五、列表渲染 for

v-for<ul id="example-1"> <li v-for="item in items"> {{ item.message }} </li></ul>var example1 = new Vue({ el: '#example-1', data: { items: [  { message: 'Foo' },  { message: 'Bar' } ] }}); <ul id="example-2"> <li v-for="item in items"> {{ parentMessage }} - {{ $index }} - {{ item.message }} </li></ul>var example2 = new Vue({ el: '#example-2', data: { parentMessage: 'Parent', items: [  { message: 'Foo' },  { message: 'Bar' } ] }});

数组变动检测
vue.js 包装了被观察数组的变异方法,故它们能触发视图更新。被包装的方法有:push(), pop(), shift(), unshift(), splice(), sort(), reverse()

example1.items.push({ message: 'Baz' });example1.items = example1.items.filter(function (item) { return item.message.match(/Foo/);}); template-v-for<ul> <template v-for="item in items"> <li>{{ item.msg }}</li> <li class="divider"></li> </template></ul>

对象 v-for

<ul id="repeat-object" class="demo"> <li v-for="value in object"> {{ $key }} : {{ value }} </li></ul>new Vue({ el: '#repeat-object', data: { object: {  FirstName: 'John',  LastName: 'Doe',  Age: 30 } }});

值域 v-for

<div> <span v-for="n in 10">{{ n }} </span></div>

六、方法与事件处理器
方法处理器

<div id="example"> <button v-on:click="greet">Greet</button></div>var vm = new Vue({ el: '#example', data: { name: 'Vue.js' }, // 在 `methods` 对象中定义方法 methods: { greet: function (event) {  // 方法内 `this` 指向 vm  alert('Hello ' + this.name + '!')  // `event` 是原生 DOM 事件  alert(event.target.tagName) } }})// 也可以在 JavaScript 代码中调用方法vm.greet(); // -> 'Hello Vue.js!'

内联语句处理器

<div id="example-2"> <button v-on:click="say('hi')">Say Hi</button> <button v-on:click="say('what')">Say What</button></div>new Vue({ el: '#example-2', methods: { say: function (msg) {  alert(msg) } }});

有时也需要在内联语句处理器中访问原生 DOM 事件。可以用特殊变量 $event 把它传入方法

<button v-on:click="say('hello!', $event)">Submit</button> methods: { say: function (msg, event) { // 现在我们可以访问原生事件对象 event.preventDefault() }};

## 事件修饰符

<!-- 阻止单击事件冒泡 --><a v-on:click.stop="doThis"></a><!-- 提交事件不再重载页面 --><fORM v-on:submit.prevent="onSubmit"></form><!-- 修饰符可以串联 --><a v-on:click.stop.prevent="doThat"><!-- 只有修饰符 --><form v-on:submit.prevent></form>

## 按键修饰符

<!-- 只有在 keyCode 是 13 时调用 vm.submit() --><input v-on:keyup.13="submit"><!-- 同上 --><input v-on:keyup.enter="submit"><!-- 缩写语法 --><input @keyup.enter="submit">

全部的按键别名:enter,tab,delete,esc,space,up,down,left,right

## 其他实例

new Vue({ el: '#demo', data: { newLabel: '', stats: stats }, methods: { add: function (e) {  e.preventDefault()  if (!this.newLabel) {  return;  }  this.stats.push({  label: this.newLabel,  value: 100  });  this.newLabel = ''; }, remove: function (stat) {  if (this.stats.length > 3) {  this.stats.$remove(stat); // 注意这里的$remove  } else {  alert('Can\'t delete more!')  } } }});

七、过渡
CSS 过渡

<div v-if="show" transition="expand">hello</div>然后为 .expand-transition, .expand-enter 和 .expand-leave 添加 CSS 规则:.expand-transition { transition: all .3s ease; height: 30px; padding: 10px; background-color: #eee; overflow: hidden;}.expand-enter, .expand-leave { height: 0; padding: 0 10px; opacity: 0;}

你可以在同一元素上通过动态绑定实现不同的过渡:

<div v-if="show" :transition="transitionName">hello</div> new Vue({ el: '...', data: { show: false, transitionName: 'fade' }}

另外,可以提供 JavaScript 钩子:

Vue.transition('expand', { beforeEnter: function (el) { el.textContent = 'beforeEnter' }, enter: function (el) { el.textContent = 'enter' }, afterEnter: function (el) { el.textContent = 'afterEnter' }, enterCancelled: function (el) { // handle cancellation }, beforeLeave: function (el) { el.textContent = 'beforeLeave' }, leave: function (el) { el.textContent = 'leave' }, afterLeave: function (el) { el.textContent = 'afterLeave' }, leaveCancelled: function (el) { // handle cancellation }});

八、组件
1.注册

// 定义var MyComponent = Vue.extend({ template: '<div>A custom component!</div>'});// 注册Vue.component('my-component', MyComponent);// 创建根实例new Vue({ el: '#example'});<div id="example"> <my-component></my-component></div>或者直接写成:Vue.component('my-component', {  template: '<div>A custom component!</div>'}); // 创建根实例new Vue({ el: '#example'});<div id="example">  <my-component></my-component></div>

2.使用prop 传递数据
实例一:

Vue.component('child', { // 声明 props props: ['msg'], // prop 可以用在模板内 // 可以用 `this.msg` 设置 template: '<span>{{ msg }}</span>'});<child msg="hello!"></child>

实例二:

  Vue.component('child', {  // camelCase in JavaScript  props: ['myMessage'],  template: '<span>{{ myMessage }}</span>' }); <!-- kebab-case in html --> <child my-message="hello!"></child>

动态props

<div> <input v-model="parentMsg"> <br> <child v-bind:my-message="parentMsg"></child></div>

使用 v-bind 的缩写语法通常更简单:

<child :my-message="parentMsg"></child>

4.Prop 绑定类型
prop 默认是单向绑定:当父组件的属性变化时,将传导给子组件,但是反过来不会。这是为了防止子组件无意修改了父组件的状态——这会让应用的数据流难以理解。不过,也可以使用 .sync 或 .once 绑定修饰符显式地强制双向或单次绑定:

比较语法:

<!-- 默认为单向绑定 --><child :msg="parentMsg"></child><!-- 双向绑定 --><child :msg.sync="parentMsg"></child><!-- 单次绑定 --><child :msg.once="parentMsg"></child>其他实例:<modal :show.sync="showModal"> <h4 slot="header">custom header</h4> </modal></div>

5.Prop 验证
组件可以为 props 指定验证要求。当组件给其他人使用时这很有用,因为这些验证要求构成了组件的 API,确保其他人正确地使用组件。此时 props 的值是一个对象,包含验证要求:

Vue.component('example', { props: { // 基础类型检测 (`null` 意思是任何类型都可以) propA: Number, // 必需且是字符串 propB: {  type: String,  required: true }, // 数字,有默认值 propC: {  type: Number,  default: 100 }, // 对象/数组的默认值应当由一个函数返回 propD: {  type: Object,  default: function () {  return { msg: 'hello' }  } }, // 指定这个 prop 为双向绑定 // 如果绑定类型不对将抛出一条警告 propE: {  twoWay: true }, // 自定义验证函数 propF: {  validator: function (value) {  return value > 10  } }, // 转换函数(1.0.12 新增) // 在设置值之前转换值 propG: {  coerce: function (val) {  return val + '' // 将值转换为字符串  } }, propH: {  coerce: function (val) {  return JSON.parse(val) // 将 JSON 字符串转换为对象  } } }});

其他实例:

Vue.component('modal', { template: '#modal-template', props: { show: {  type: Boolean,  required: true,  twoWay: true  } }});

6.注册

// 定义var MyComponent = Vue.extend({ template: '<div>A custom component!</div>'});// 注册Vue.component('my-component', MyComponent);// 创建根实例new Vue({ el: '#example'});<div id="example"> <my-component></my-component></div>

或者直接写成:

Vue.component('my-component', {  template: '<div>A custom component!</div>'}); // 创建根实例new Vue({ el: '#example'});<div id="example">  <my-component></my-component></div>

7.使用prop 传递数据
实例一:

Vue.component('child', { // 声明 props props: ['msg'], // prop 可以用在模板内 // 可以用 `this.msg` 设置 template: '<span>{{ msg }}</span>'});<child msg="hello!"></child>

实例二:

  Vue.component('child', {  // camelCase in JavaScript  props: ['myMessage'],  template: '<span>{{ myMessage }}</span>' }); <!-- kebab-case in HTML --> <child my-message="hello!"></child>

8.动态props

<div> <input v-model="parentMsg"> <br> <child v-bind:my-message="parentMsg"></child></div>

使用 v-bind 的缩写语法通常更简单:

<child :my-message="parentMsg"></child>

9.Prop 绑定类型
prop 默认是单向绑定:当父组件的属性变化时,将传导给子组件,但是反过来不会。这是为了防止子组件无意修改了父组件的状态——这会让应用的数据流难以理解。不过,也可以使用 .sync 或 .once 绑定修饰符显式地强制双向或单次绑定:

比较语法:

<!-- 默认为单向绑定 --><child :msg="parentMsg"></child><!-- 双向绑定 --><child :msg.sync="parentMsg"></child><!-- 单次绑定 --><child :msg.once="parentMsg"></child>

其他实例:

<modal :show.sync="showModal"> <h4 slot="header">custom header</h4> </modal></div>

10.Prop 验证
组件可以为 props 指定验证要求。当组件给其他人使用时这很有用,因为这些验证要求构成了组件的 API,确保其他人正确地使用组件。此时 props 的值是一个对象,包含验证要求:

Vue.component('example', { props: { // 基础类型检测 (`null` 意思是任何类型都可以) propA: Number, // 必需且是字符串 propB: {  type: String,  required: true }, // 数字,有默认值 propC: {  type: Number,  default: 100 }, // 对象/数组的默认值应当由一个函数返回 propD: {  type: Object,  default: function () {  return { msg: 'hello' }  } }, // 指定这个 prop 为双向绑定 // 如果绑定类型不对将抛出一条警告 propE: {  twoWay: true }, // 自定义验证函数 propF: {  validator: function (value) {  return value > 10  } }, // 转换函数(1.0.12 新增) // 在设置值之前转换值 propG: {  coerce: function (val) {  return val + '' // 将值转换为字符串  } }, propH: {  coerce: function (val) {  return JSON.parse(val) // 将 JSON 字符串转换为对象  } } }});

其他实例:

Vue.component('modal', { template: '#modal-template', props: { show: {  type: Boolean,  required: true,  twoWay: true  } }});

11.使用slot分发内容
<slot> 元素作为组件模板之中的内容分发插槽。这个元素自身将被替换。
有 name 特性的 slot 称为命名 slot。 有 slot 特性的内容将分发到名字相匹配的命名 slot。

例如,假定我们有一个 multi-insertion 组件,它的模板为:

<div> <slot name="one"></slot> <slot></slot> <slot name="two"></slot></div>

父组件模板:

<multi-insertion> <p slot="one">One</p> <p slot="two">Two</p> <p>Default A</p></multi-insertion>

渲染结果为:

<div> <p slot="one">One</p> <p>Default A</p> <p slot="two">Two</p></div>

“JavaScript的MVVM库怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: JavaScript的MVVM库怎么使用

本文链接: https://lsjlt.com/news/344044.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript的MVVM库怎么使用
    本篇内容介绍了“JavaScript的MVVM库怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、v-bind 缩写<!--&...
    99+
    2023-07-04
  • MVVM和MVVMLight框架怎么使用
    今天小编给大家分享一下MVVM和MVVMLight框架怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、MVVM 和...
    99+
    2023-06-29
  • 使用 JavaScript MVVM 架构打造动态 Web 应用程序
    MVVM 架构概述 MVVM(Model-View-ViewModel)架构是一种设计模式,用于分离应用程序的模型层、视图层和视图模型层。它基于以下概念: 模型(Model):表示应用程序的数据和业务逻辑。 视图(View):负责呈现...
    99+
    2024-03-03
    MVVM 架构、JavaScript、动态 Web 应用、响应式编程、数据绑定
  • 怎么使用JavaScript实现手势库
    小编给大家分享一下怎么使用JavaScript实现手势库,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JavaScript的特点1.JavaScript主要用来向...
    99+
    2023-06-14
  • MVVM 初学者指南:使用 JavaScript 构建动态用户界面
    MVVM(模型-视图-视图模型)是一种设计模式,用于构建动态和响应的用户界面。在 JavaScript 中,可以使用 MVVM 库(例如 Vue.js、Angular.js 和 Knockout.js)轻松实现这一模式。 组件 MVVM ...
    99+
    2024-03-15
    MVVM架构
  • Vue的MVVM模板语法和数据绑定怎么使用
    本篇内容介绍了“Vue的MVVM,模板语法和数据绑定怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. Vue概述Vue官网英文官网...
    99+
    2023-06-22
  • javascript的yield怎么使用
    本文小编为大家详细介绍“javascript的yield怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“javascript的yield怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,...
    99+
    2024-04-02
  • JavaScript的json.stringify()怎么使用
    使用JSON.stringify()方法可以将JavaScript对象转换为JSON字符串。语法:JSON.stringify(va...
    99+
    2023-08-09
    JavaScript
  • javascript的each怎么使用
    这篇文章主要介绍“javascript的each怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“javascript的each怎么使用”文章能帮助大家解决问题。什么是each?each 是一种...
    99+
    2023-07-06
  • JavaScript MVVM 架构:用户界面设计的最佳选择
    MVVM 架构简介 MVVM(Model-View-ViewModel)是一种用于构建复杂用户界面的架构模式。它将应用程序逻辑(模型)、用户界面(视图)和连接它们的可观察的桥梁(视图模型)分离开来。MVVM 架构通过双向数据绑定简化了 ...
    99+
    2024-03-03
    MVVM、JavaScript、Angular、Vue.js、Knockout.js
  • MVVM 架构的优势:简化 JavaScript 应用程序开发
    ...
    99+
    2024-04-02
  • MVVM 架构:释放 JavaScript 应用程序的全部潜力
    ...
    99+
    2024-04-02
  • MVVM 的革命:提升 JavaScript 应用程序的响应能力
    MVVM 的原理 MVVM 架构遵循以下三大原则: 模型 (Model):包含应用程序的业务逻辑和数据。 视图 (View):负责应用程序的用户界面,负责呈现数据。 视图模型 (ViewModel):充当模型和视图之间的桥梁,将模型的数...
    99+
    2024-03-15
    MVVM架构
  • 怎么使用javascript
    要使用JavaScript,可以遵循以下步骤:1. 创建一个HTML文件:使用文本编辑器创建一个新文件,并将其保存为.html文件。...
    99+
    2023-09-05
    javascript
  • WPF引用MVVM框架与使用方法是什么
    今天就跟大家聊聊有关WPF引用MVVM框架与使用方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.NuGet引用MVVM框架包引入该框架包之后, 默认会在目录下创建View...
    99+
    2023-06-29
  • JavaScript MVVM 架构:提升 Web 应用程序性能的秘诀
    理解 MVVM 架构 MVVM(模型-视图-视图模型)是一种 JavaScript 架构模式,它将应用程序逻辑清晰地分离为三个组件: 模型:表示应用程序的数据和业务逻辑。 视图:用户界面,显示应用程序状态。 视图模型:充当模型和视图之...
    99+
    2024-03-03
    MVVM、JavaScript、数据绑定、性能优化、Web 应用程序
  • JavaScript MVVM 架构:解锁 Web 应用程序的无限潜力
    模型 模型层包含应用程序的数据和业务逻辑。它负责维护应用程序的状态,并根据需要与服务端交互。模型与视图模型通信以更新应用程序的内部状态。 视图 视图层负责呈现应用程序的 UI。它通过使用数据绑定表达式将自身与视图模型连接起来。当模型中的数...
    99+
    2024-03-15
    MVVM架构
  • 怎么使用JavaScript中的this
    本篇内容介绍了“怎么使用JavaScript中的this”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!隐式...
    99+
    2024-04-02
  • JavaScript中的reduce()怎么使用
    本篇内容介绍了“JavaScript中的reduce()怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2024-04-02
  • JavaScript的Promise类怎么使用
    这篇文章主要介绍了JavaScript的Promise类怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript的Promise类怎么使用文章都会有所收获,下...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作