vue.js - 如何从 Vue.js v-bind 调用 JavaScript 函数

标签 vue.js

我想从 Vue.js v-bind 属性中调用纯 JavaScript 函数。我可以通过 Vue.js 数据变量引导它来实现,但直接从 v-bind 调用纯 JavaScript 函数会产生错误。

http://jsfiddle.net/edwardtanguay/2st0fruh

我怎样才能直接调用 JavaScript 函数,而不必映射到 Vue.js 中的变量或方法?

HTML

<div id="app">
  <div>
    The URL is: {{url}}
  </div>
  <div>
    <a target="_blank" v-bind:href="url">goto URL</a>
  </div>
  <div>
    <a target="_blank" v-bind:href="url2">goto URL2</a>
  </div>
  <div>
    <a target="_blank" v-bind:href="getUrl()">goto URL2 using javascript function</a>
  </div>
</div>

JavaScript

function getUrl() {
    return 'http://www.amazon.com';
}

var vm = new Vue({
    el: '#app',
    data: {
        url: 'http://www.google.com',
    url2: getUrl()
    }
});

最佳答案

为了让 Vue 能够绑定(bind)自己,它需要成为 Vue 实例的一部分。虽然您的函数在正常情况下可能可以访问,但它不是 vue 实例的一部分,因此无法访问。

正如您已经说过的,使用 data Prop 将其移动到 vue 实例的范围内。如果值可能发生变化,您也可以为此使用 computed 属性。

根据 this post from the vue author(Evan You)关于使用全局函数:

Because implicitly falling back to globals will be a maintainability nightmare. When you look at a template you will have no idea whether a variable belongs to the component, or some globals defined by someone you have no idea where.

值得注意的是,如果您觉得这是您非常想做的事情,您可以使用全局混合并在其中指定一些方法来获取 Urls。

有一种方法可以做到这一点,但我不推荐这样做:

参见 this fiddle

基本上,您将自己的函数添加到 Vue.prototype(这就是 Vue Router 和 Vuex 的工作方式):

Vue.prototype.$myFunc = function getUrl() {
    return 'http://www.amazon.com';
}

确保在创建var vm = new Vue() 调用之前声明它。

然后您可以通过模板中的 $myFunc() 或 vue 实例本身中的 this.$myFunc() 访问它。

关于vue.js - 如何从 Vue.js v-bind 调用 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48474301/

相关文章:

javascript - 我无法修复错误 "Property or method is not defined on the instance but referenced during render."

javascript - 在 Vue 中启用下拉选择上的按钮?

javascript - Vue i18n - 如何在 i18n 组件选项中获取当前语言环境?

javascript - Vuejs - 更新数组中的对象

javascript - 在 Vue 动态添加的组件中添加和删除元素的问题

css - 如何通过调整元素大小来禁用滚动条?

reactjs - 在 'default' 中找不到导出 'Three'(导入为 'three')

javascript - Vue.js CLI 中的多个页面

javascript - vue合并两个对象数组

javascript - GSAP 3+ 动画在 VueJS 项目中不起作用