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插件已经不再被官方推荐使用。但仍然可用,不过未来不再维护。(原文)

替换:

  1. 可以使用$.ajax
  2. 新用户可以使用Axios。当前最流行的HTTP client library,覆盖了vue-resource。
  3. 如果喜欢使用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过滤器;的更多相关文章

  1. vue data对象添加新属性触发视图

    <template> <div class="wrap open"> <a>{{test01.name}}</a> <a> ...

  2. vue.js初探:计算属性和methods

    在vue.js中,计算属性和methods方法的函数相同时,两者的最终执行结果都是相同的.然而不同的是,计算属性是基于它的依赖缓存.计算属性只有在它的相关依赖发生改变时才会重新取值.这就意味着只要 m ...

  3. Vue系列(二):发送Ajax、JSONP请求、Vue生命周期及实例属性和方法、自定义指令与过渡

    上一篇:Vue系列(一):简介.起步.常用指令.事件和属性.模板.过滤器 一. 发送AJAX请求 1. 简介 vue本身不支持发送AJAX请求,需要使用vue-resource.axios等插件实现 ...

  4. Vue.js 基础指令实例讲解(各种数据绑定、表单渲染大总结)——新手入门、高手进阶

    Vue.js 是一套构建用户界面的渐进式框架.他自身不是一个全能框架--只聚焦于视图层.因此它非常容易学习,非常容易与其它库或已有项目整合.在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动 ...

  5. 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: ...

  6. Vue.js学习 Item5 -- 计算属性computed与$watch

    在模板中绑定表达式是非常便利的,但是它们实际上只用于简单的操作.模板是为了描述视图的结构.在模板中放入太多的逻辑会让模板过重且难以维护.这就是为什么 Vue.js 将绑定表达式限制为一个表达式.如果需 ...

  7. 04: vue生命周期和实例属性和方法

    1.4 组件的生命周期 1.说明 1. Vue将组件看成是一个有生命的个体,跟人一样,定义了各个阶段, 2. 组件的生命周期:组件的创建过程 3. 组件生命周期钩子函数:当组件处在某个阶段,要执行某个 ...

  8. 第4章-Vue.js 交互及实例的生命周期

    一.学习目标 了解实例生命周期的过程 理解钩子函数的作用 掌握Vue.js过滤器的使用方法 (重点) 能够使用网络请求进行前后端交互 (重点.难点) 二.交互的基本概念 2.1.前端和后端的概念 说明 ...

  9. Vue.js:监听属性

    ylbtech-Vue.js:监听属性 1.返回顶部 1. Vue.js 监听属性 本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例 & ...

随机推荐

  1. HDFS文件操作

    hadoop装好后,文件系统中没有任何目录与文件 1. 创建文件夹 hadoop fs -mkdir -p /hkx/learn 参数-p表示递归创建文件夹 2. 浏览文件 hadoop fs -ls ...

  2. linux常用命令:route 命令

    Linux系统的route 命令用于显示和操作IP路由表(show / manipulate the IP routing table).要实现两个不同的子网之间的通信,需 要一台连接两个网络的路由器 ...

  3. Linux基础命令---bzcat

    bzcat 解压缩被bzip2压缩过的文件,将文件解压到标准输出,此命令只有一个选项-s.该指令对压缩过的二进制文件没有意义,因为二进制文件没有可读性. 此命令的适用范围:RedHat.RHEL.Ub ...

  4. php mysqli query 查询数据库后读取内容的方法

    php mysqli query 查询数据库后读取内容的方法 <?php$mysqli = new mysqli("localhost", "my_user&quo ...

  5. Putty Technical Note

    转载自:http://libai.math.ncu.edu.tw/bcc16/6/putty/puttyt.html Terminal panel Terminal 面板可調整 PuTTY 對於模擬終 ...

  6. SNMP学习笔记之SNMP TRAP简介、流程以及使用Python实现接受Trap信息

    0x00 SNMP TRAP简介 SNMP(Simple Network Management Protocol) trap是一种很有用,但是也容易让人难以理解的协议. 虽然名字叫做简单网络管理协议, ...

  7. P4052 [JSOI2007]文本生成器

    P4052 [JSOI2007]文本生成器 AC自动机+dp 优秀题解传送门 设f[ i ][ j ]表示串的长度为 i ,当前在 j 点时不可识别的串的方案数 最后用总方案数减去不可识别方案数就是答 ...

  8. Python3.x(windows系统)安装requests库

    Python3.x(windows系统)安装requests库 cmd命令: pip install requests 执行结果:

  9. 02: DOM 实例

    1.1 Event 对象 <body> <a id="myAnchor" href="http://www.microsoft.com"> ...

  10. 20145104张家明 《Java程序设计》第四次实验设计

    20145104张家明 <Java程序设计>第四次实验设计 这第四次实验报告 我们开始着手安卓了 在电脑上安装了安卓虚拟机