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. testng使用DataProvider+Excel实现DDT

    DDT,即数据驱动测试 Data Driver Test,我曾经记录了一篇关于python的DDT框架(Excel+DDT数据驱动实例),那么java中的DDT是怎么样的呢?在java中,可以用tes ...

  2. caffe 中base_lr、weight_decay、lr_mult、decay_mult代表什么意思?

    在机器学习或者模式识别中,会出现overfitting,而当网络逐渐overfitting时网络权值逐渐变大,因此,为了避免出现overfitting,会给误差函数添加一个惩罚项,常用的惩罚项是所有权 ...

  3. python-自定义异常,with用法

    抛出异常 #coding=utf-8 def  exceptionTest(num): if num<0: print "if num<0" raise Excepti ...

  4. python进程同步,condition例子

    #coding=utf-8import multiprocessing as mpimport time def consumer(cond):    with cond:        print ...

  5. Linux基础命令---last

    last 显示以前登录过的用户信息,last指令会搜索/var/log/wtmp文件(或者是经过-f选项指定的文件),然后列出文件中所有的用户信息.如果执行last指令时提示“last /var/lo ...

  6. 音响理论基础入门:Gain(增益)

    谈到放大器就必须先了解增益:一个小的信号Level(电平)经过放大电路成为大的信号Level ,也就是说由小变大之间的差异就叫增益,也叫放大率,反过来的叫衰减率.在音响系统内,一般以信号源的输入电平决 ...

  7. iperf3.0 hisi uclib 交叉编译

    1. 下载iperf src https://github.com/esnet/iperf/ 2.修改makefile.in 里面的配置. src/Makefile.in 613行 地方两行,去掉-p ...

  8. pyDay1

    1.import python中的import语句是用来导入模块的. 在python的模块库中有大量的模块可供使用,要想使用这些文件需要用import语句把指定模块导入到当前程序中, 使用方法例如: ...

  9. linux内核分析 1、2章读书笔记

    一.linux历史 20世纪60年代,MIT开发分时操作系统(Compatible TIme-Sharing System),支持30台终端访问主机: 1965年,Bell实验室.MIT.GE(通用电 ...

  10. ZedGraph如何动态的加载曲线

    ZedGraph的在线文档 http://zedgraph.sourceforge.net/documentation/default.html 官网的源代码 http://sourceforge.n ...