Vue.js Cookbook: 添加实例属性; 👍 axios(4万➕✨)访问API; filters过滤器;
add instance properties
//加上$,防止和已经定义的data,method, computed的名字重复,导致被覆写。
//可以自定义添加其他符号。 Vue.prototype.$appName = 'Myqq1 App' var mm = new Vue({
data: {
appName: 'xxxxx'
},
beforeCreate: function () {
console.log(this.$appName)
},
created: function() {
console.log(this.appName)
} })
真实示例: 用axios替换Vue Resource。
注意⚠️: Vue Resource插件已经不再被官方推荐使用。但仍然可用,不过未来不再维护。(原文)
替换:
- 可以使用$.ajax
- 新用户可以使用Axios。当前最流行的HTTP client library,覆盖了vue-resource。
- 如果喜欢使用lower-level,使用标准的 fetch API. 好处是无需额外的加载一个外部资源。但没有被浏览器完全支持,需要使用polyfill。因此使用Axios的更多一些。
使用Vue.prototype.$http = axios。让$http的值是axios, 这样仍旧可以使用传统的写法了。
我的code pen:
https://codepen.io/chentianwei411/pen/rZXavE
原型方法的上下文
javaScript的原型的方法会获得该实例的上下文。就是实例本身this,可以访问实例的数据,computed,method等定义在实例上的东西。
Vue.prototype.$reverseText = function (propertyName) {
//this指的就是实例本身。
//Vue {_uid: 0, _isVue: true, $options: {…}, _renderProxy: Proxy, _self: Vue, …}
this[propertyName] = this[propertyName]
.split('')
.reverse()
.join('')
}
new Vue({
data: {
message: 'Hello'
},
created: function () {
console.log(this.message) // => "Hello"
this.$reverseText('message')
console.log(this.message) // => "olleH"
}
})
但是,原型方法如果使用箭头函数的话,,this绑定的上下文不会正常工作,因为它们会隐式绑定父作用域。所以会出错。
⚠️:我是在Rails中的application.js中定义的Vue原型方法$reverseText。所以这个方法中的this绑定的是父作用域,即文件application.js这个作用域:见下图
Vue.prototype.$reverseText = propertyName => {
//this是一个{__esModule: true}
console.log(this);
this[propertyName] = this[propertyName]
.split('')
.reverse()
.join('')
}

使用 axios 访问 API
git https://github.com/axios/axios
实例:看过滤器一章https://cn.vuejs.org/v2/guide/filters.html
//写在new Vue({...})内部。
filters: {
currencydecimal (value) {
return value.toFixed(2)
}
},
一个简单的axios使用:
axios
.get('https://api.coindesk.com/v1/bpi/currentprice.json')
.then(response => (this.info = response.data.bpi))
.catch(error => console.log(error)) .finally(() => this.loading = false
真实案例: my code pen:
https://codepen.io/chentianwei411/pen/OoKVNo
重点:
1. Filters过滤器:
当在HTML中遇到, {{ currency.rate_float | currencydecimal }} 会调用过滤器中的方法currencydecimal,参数是currency.rote_float, 返回的结果显示在 {{ 内 }}
过滤器使用地点:
除了{{ xx }}内,还有用在v-bind表达式内部。
{{ message | capitalize }}
<div v-bind:id="rawId | formatId"></div>
定义位置:
1. 在new Vue()内使用 filters: { xxx }
2.在初始化实例前面,使用Vue.filter("名字", function(value) { xxx })
Fetch
还可以使用Fetch API 这是原生API,省资源。但是还有浏览器不支持。需要polyfill。
如果你对使用 Fetch API 有兴趣,这里有一些非常棒的文章来解释如何使用它。
Vue.js Cookbook: 添加实例属性; 👍 axios(4万➕✨)访问API; filters过滤器;的更多相关文章
- vue data对象添加新属性触发视图
<template> <div class="wrap open"> <a>{{test01.name}}</a> <a> ...
- vue.js初探:计算属性和methods
在vue.js中,计算属性和methods方法的函数相同时,两者的最终执行结果都是相同的.然而不同的是,计算属性是基于它的依赖缓存.计算属性只有在它的相关依赖发生改变时才会重新取值.这就意味着只要 m ...
- Vue系列(二):发送Ajax、JSONP请求、Vue生命周期及实例属性和方法、自定义指令与过渡
上一篇:Vue系列(一):简介.起步.常用指令.事件和属性.模板.过滤器 一. 发送AJAX请求 1. 简介 vue本身不支持发送AJAX请求,需要使用vue-resource.axios等插件实现 ...
- Vue.js 基础指令实例讲解(各种数据绑定、表单渲染大总结)——新手入门、高手进阶
Vue.js 是一套构建用户界面的渐进式框架.他自身不是一个全能框架--只聚焦于视图层.因此它非常容易学习,非常容易与其它库或已有项目整合.在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动 ...
- Vue.js教程--基础(实例 模版语法template computed, watch v-if, v-show v-for, 一个组件的v-for.)
官网:https://cn.vuejs.org/v2/guide/index.html Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统. 视频教程:https: ...
- Vue.js学习 Item5 -- 计算属性computed与$watch
在模板中绑定表达式是非常便利的,但是它们实际上只用于简单的操作.模板是为了描述视图的结构.在模板中放入太多的逻辑会让模板过重且难以维护.这就是为什么 Vue.js 将绑定表达式限制为一个表达式.如果需 ...
- 04: vue生命周期和实例属性和方法
1.4 组件的生命周期 1.说明 1. Vue将组件看成是一个有生命的个体,跟人一样,定义了各个阶段, 2. 组件的生命周期:组件的创建过程 3. 组件生命周期钩子函数:当组件处在某个阶段,要执行某个 ...
- 第4章-Vue.js 交互及实例的生命周期
一.学习目标 了解实例生命周期的过程 理解钩子函数的作用 掌握Vue.js过滤器的使用方法 (重点) 能够使用网络请求进行前后端交互 (重点.难点) 二.交互的基本概念 2.1.前端和后端的概念 说明 ...
- Vue.js:监听属性
ylbtech-Vue.js:监听属性 1.返回顶部 1. Vue.js 监听属性 本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例 & ...
随机推荐
- python管道pipe,两个进程,使用管道的两端分别执行写文件动作,带锁(lock)
#coding=utf-8import multiprocessing as mp def write_file(content,lock): lock.acquire() with op ...
- Linux基础命令---find
file 判断指定文件的文件类型,它依据文件内容判断,并不依据扩展名.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 ...
- DBMS_OUTPUT.PUT_LINE()方法的简单介绍
1.最基本的DBMS_OUTPUT.PUT_LINE()方法. 随便在什么地方,只要是BEGIN和END之间,就可以使用DBMS_OUTPUT.PUT_LINE(output);然而这会有一个问题,就 ...
- Python之路----各类推导式
[每一个元素或者是和元素相关的操作 for 元素 in 可迭代数据类型] #遍历之后挨个处理[满足条件的元素相关的操作 for 元素 in 可迭代数据类型 if 元素相关的条件] #筛选功能 列表推导 ...
- JAVA注解@Interface基础知识
java注解是在JDK5时引入的新特性,大多数框架(SpringBoot.MyBatis.Quartz)背后都在大量使用注解开发. 一.先进行一个小试验,了解注解开发流程 建立maven项目annot ...
- 树(Heap)
对于大量的输入数据,链表的线性访问时间太慢,不宜使用——<数据结构与算法分析——C 语言描述> p 65 对于大量的输入数据,适合用树结构,大部分操作都是 O( log N ). 二叉树 ...
- C++设计模式 之 “数据结构” 模式:Composite、Iterator、Chain of Resposibility
"数据结构"模式 常常有一些组件在内部具有特定的数据结构,如果让客户程序依赖这些特定的数据结构,将极大地破坏组件的复用.这时候,将这些特定数据结构封装在内部,在外部提供统一的接口, ...
- php在Nginx环境下进行刷新缓存立即输出,实现常驻进程轮询。
以下面这段代码并不会逐个输出,而是当浏览器筹够一定字节数进行统一输出,结果显而易见,10秒后一次性输出所有内容 for($i=0;$i<10;$i++){ echo $i.'</br> ...
- 20145122《Android开发基础》实验四实验报告
实验名称 Android开发基础 实验内容 1.Windows环境下Android Studio 2.能够运行安卓AVD模拟器 3.使用安卓虚拟手机显示HelloWorld以及自己的学号 统计的PSP ...
- 解决Navicat Premium 12 连接oracle数据库出现ORA-28547的问题
1. 出现的问题... 下午工作时想连接Oracle数据库,使用的是Navicat Premium 12 . 数据库地址.用户名.密码.端口号都没有问题,但出现了ORA-28547:connectio ...