首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >以编程方式创建绑定表达式

以编程方式创建绑定表达式
EN

Stack Overflow用户
提问于 2017-03-23 05:54:51
回答 3查看 1.2K关注 0票数 0

我有一个场景,其中我希望执行的表达式被动态加载到组件中。我无法将表达式设置为v-if,因为它是一个文字字符串,而不是实际的绑定表达式。

我看过使用vm.$watch,但是表达式只允许为点标记路径,而不是单个javascript表达式。

vm.$watch用法:查看Vue实例上的表达式或计算函数以了解更改。使用新值和旧值调用回调。表达式只接受简单的点分隔路径。对于更复杂的表达式,使用函数代替。

我是否可以使用vuejs的某些部分来实现这一点?我假设v-if指令等的绑定表达式最终都是在给定上下文中被解析和计算的字符串,那么这些函数是否可以用于组件呢?

希望下面的示例能够更全面地展示我正在努力实现的目标:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
    <div>
        <div v-if="expression"></div>
    </div>
</template>

<script>
  export default {
    name: 'mycomponent'
    data: function() {
      var1: 5,
      var2: 7,
      expression: null
    },
    created: function() {
      this.$http.get('...').then((response) => {
        // Sample response:
        // {
        //   'expression' : 'var1 > var2'
        // }
        // TODO: Not this!!
        this.expression= response.expression;
      });
    }
  }
</script>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-17 23:56:36

为了整理我一年多来一直没有回答的问题,我最后使用的答案是使用角表达式库角表达式,但将来可能会转向使用友好的表达语言库,因为我的客户端和服务器都将评估类似的表达式。

票数 0
EN

Stack Overflow用户

发布于 2017-03-23 06:11:13

您可以为此创建一个方法,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div v-if="testExpression"></div>

并在组件配置中添加方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
methods: {
    testExpression() {
        return eval(this.expression)
    }
}
票数 1
EN

Stack Overflow用户

发布于 2017-03-23 06:39:41

请注意,计算表达式需要使用通常不是很好的JavaScript,例如evalwith。注意确保您能够控制eval的任何使用。

我建议使用computed,而不是一种方法;它似乎更合适(并且避免需要调用括号)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new Vue({
  el: '#app',
  data: {
    var1: 5,
    var2: 7,
    expression: null
  },
  computed: {
    evaluatedExpression: function() {
      with(this) {
        try {
          return eval(expression);
        } catch (e) {
          console.warn('Eval', expression, e);
        }
      }
    }
  },
  created: function() {
    setTimeout(() => {
      this.expression = 'var1 < var2';
    }, 800);
    setTimeout(() => {
      this.expression = 'var1 > var2';
    }, 2500);
  }
});
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.2.4/vue.min.js"></script>
<div id="app">
  {{expression}}, {{evaluatedExpression}}
  <div v-if="evaluatedExpression">
    Yep
  </div>
  <div v-else>
    Nope
  </div>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42978124

复制
相关文章
以编程方式创建Vue.js组件实例
最近参与了一个Vue.js项目,项目中需要能够以编程方式创建组件。通过编程,意思是使用JavaScript创建和插入组件,而无需在模板中编写任何内容。
前端知否
2020/03/23
7.9K3
以编程方式执行Spark SQL查询的两种实现方式
摘 要 在自定义的程序中编写Spark SQL查询程序 1.通过反射推断Schema package com.itunic.sql import org.apache.spark.sql.SQLContext import org.apache.spark.{SparkConf, SparkContext} /**   * Created by itunic.com on 2017/1/2.   * Spark SQL   * 通过反射推断Schema   * by me:   * 我本沉默是关注互联
天策
2018/06/22
2K0
uniapp样式绑定方式
uni-app的Class与样式的绑定 可用的几种class绑定方式: html <!-- 常规形式 --> <view class="green">绿色的字体</view> <view style="color: #00FF00;"> 我是一个绿色的内联样式字体</view> <!--style 内联样式 绑定的形式 其中fontSize是一个变量,改变这个变量,字体也会随之改变--> <view :style="{fontSize:fontSize + 'px'}"> 我是一个动态的内联样式字体</
薛定喵君
2019/11/05
4.2K0
salesforce lightning零基础学习(三) 表达式的!(绑定表达式)与 #(非绑定表达式)
在salesforce的classic中,我们使用{!expresion}在前台页面展示信息,在lightning中,上一篇我们也提及了,如果展示attribute的值,可以使用{!v.expresion}展示信息。
Zero-Zhang
2018/07/31
7470
salesforce lightning零基础学习(三)  表达式的!(绑定表达式)与 #(非绑定表达式)
WordPress二次开发之以类的方式创建插件
为插件创建类主要是规范,避免与其他插件的方法重名,方便调用 定义插件类 以上一篇文章编写的插件为例 class my_change_font_style{ } 在构造方法调用HOOK function __construct(){ //创建菜单 add_action('admin_menu',array($this,'my_create_menu')); } 这里以字符串调用方法的方式与之前不同 array($this,'方法名称') 调用
切图仔
2022/09/14
3770
WordPress二次开发之以类的方式创建插件
salesforce lightning零基础学习(三) 表达式的!(绑定表达式)与 #(非绑定表达式)
在salesforce的classic中,我们使用{!expresion}在前台页面展示信息,在lightning中,上一篇我们也提及了,如果展示attribute的值,可以使用{!v.expresion}展示信息。 lightning在component中解析动态值的时候,会将{!} 这个里面的变量进行动态的解析以及展示。当然这个变量可以是基础类型,自定义类型,数组集合等等,当然如果表达式为空字符串或者是空格则不会解析。偶尔特殊的要求为需要输出‘{!}’这个字符串,官方文档说可以使用<aura:text/
Zero-Zhang
2018/05/28
1.1K0
SpringMVC数据绑定定义支持的数据绑定方式
定义 百度百科定义: 简单绑定是将一个用户界面元素(控件)的属性绑定到一个类型(对象)实例上的某个属性的方法。 例如,如果一个开发者有一个Customer类型的实例,那么他就可以把Customer的“Name”属性绑定到一个TextBox的“Text”属性上。“绑定”了这2个属性之后,对TextBox的Text属性的更改将“传播”到Customer的Name属性,而对Customer的Name属性的更改同样会“传播”到TextBox的Text属性。 支持的数据绑定方式 SpringMVC的各种参数包括对
JavaEdge
2018/04/28
5.6K0
SpringMVC数据绑定定义支持的数据绑定方式
以 React 的方式思考
React 很棒的一点是创建应用中引导你思考的过程。这篇文档中,我们将通过运用React创建一个产品搜索列表,来引导你熟悉这个思考过程。
fanzhh
2019/08/20
3.5K0
以 React 的方式思考
现在,以编程方式在 Electron 中上传文件,是非常简单的!
本文主要探讨了在 Electron 应用中如何实现上传文件到服务器的功能,同时通过本地代理服务器来获取完整的cookie。首先介绍了在 Electron 应用中如何通过 XHR 上传文件到服务器,然后介绍了如何通过 LocalStorage 将文件保存在本地。最后,本文介绍了一种使用 Electron 创建本地代理服务器,从而获取完整的cookie的方法。
ios122
2017/12/27
5.1K0
现在,以编程方式在 Electron 中上传文件,是非常简单的!
创建自己的核绑定线程
2.works线程私有的vlib_main_t结构是哪里创建的? src/vlib/threads.c文件中函数start_workers,根据workers线程和其他线程数量复制vlib_global_main到vlib_mains中,包括创建私有的线程栈。具体可以看代码。
dpdk-vpp源码解读
2023/03/07
8900
创建自己的核绑定线程
phpStudy 创建多个站点,绑定域名
站长前面推荐过《phpStudy:非常棒的PHP环境搭建包(支持Apache、IIS、Nginx和LightTPD) 》,今天来简单介绍一下使用 phpStudy 创建多个站点,绑定域名的方法。
星哥玩云
2022/08/13
5K0
phpStudy 创建多个站点,绑定域名
Java并发编程(01):线程的创建方式,状态周期管理
进程是计算机中的程序,关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
知了一笑
2020/03/11
4740
v-model 创建双向绑定
在表单 <input>、<textarea> 及<select>元素控件或者组件上创建双向绑定,它负责监听用户的输入事件以更新数据 1. 普通文本框 ---- <div id="app"> <p>{{ msg }}</p> <input type="text" v-model="msg"> </div> <script> let vm = new Vue({ el: '#app', data: { msg: 123, }, }) </script> 2. 单选框 ---- <div id="a
很酷的站长
2023/02/18
3260
v-model 创建双向绑定
linux udp编程 绑定失败_udp socket编程
UDP协议与TCP协议一样用于处理数据包,在OSI模型中,两者都位于传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
全栈程序员站长
2022/10/04
4.6K0
以交互方式安装ESXi 6.0
ESXi 是VMware vSphere一整套解决方案的底层服务器系统,根据不同的应用场景可将ESXi安装在U盘、本地磁盘或ISCSI存储。本文章将介绍如果通过交互方式在本地磁盘安装ESXi 6.0。
全栈程序员站长
2022/07/05
7610
以交互方式安装ESXi 6.0
Docker以挂载方式安装RocketMQ
如果你还没有安装 Docker,请先安装。可以参考官方文档 https://docs.docker.com/install/ 进行安装
关忆北.
2023/10/11
1.6K0
Docker以挂载方式安装RocketMQ
js中绑定事件与解除绑定事件的3种方式
方式一: btn.onclick = function (){ console.log("123"); }; btn.onclick = function (){ console.log("345");//只能打印这一个结果 }; 解除: btn.onclick = null; 方式二:谷歌 火狐支持 ie8不支持 btn.addEventListener("click",function(){ console.log("123")
用户4344670
2019/08/28
18.8K1
以 GitOps 方式管理 Terraform 资源
这是我们希望揭示Flux 生态系统[1]项目的博文系列中的第一篇。这次是Terraform 控制器[2]。
CNCF
2022/11/28
2.4K0
以 GitOps 方式管理 Terraform 资源
提示以只读方式打开文件
如果不希望内容审阅者意外修改你的文档,可在发送文档供审阅前将其设为只读。 另一种方法是限制格式和编辑。
MIKE笔记
2023/03/22
1.8K0
提示以只读方式打开文件
DropDownList绑定数据的几种方式
1. 视图中添加 可以直接通过单击属性”Items”后的按钮为某一DropDownList控件添加数据项。每添加 一项数据就是添加了一个ListItem(列表控件中的数据项)。这种方式比较简单,但是 局限性比较大,并不常用。
全栈程序员站长
2022/09/06
7340

相似问题

Guice -以编程方式创建的绑定

10

以编程方式创建RelativeSource FindAncestor绑定

16

Silverlight -以编程方式解析绑定表达式

10

以编程方式创建自定义绑定

10

以编程方式创建ListView项的绑定

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文