GVKun编程网logo

从 JavaScript 获取 Vue 插槽中的每个 HTML 元素(vue获取插槽中的组件)

3

对于想了解从JavaScript获取Vue插槽中的每个HTML元素的读者,本文将是一篇不可错过的文章,我们将详细介绍vue获取插槽中的组件,并且为您提供关于1、vuevue2.0vue-clivue-

对于想了解从 JavaScript 获取 Vue 插槽中的每个 HTML 元素的读者,本文将是一篇不可错过的文章,我们将详细介绍vue获取插槽中的组件,并且为您提供关于1、vue vue2.0 vue-cli vue-router webpack、Ant Design(React/Vue) 、Element-ui(Vue)、iView(Vue)对比、antd vue 在 vue.config.js中 自定义主题颜色(定制主题、vue-cli3)、ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction的有价值信息。

本文目录一览:

从 JavaScript 获取 Vue 插槽中的每个 HTML 元素(vue获取插槽中的组件)

从 JavaScript 获取 Vue 插槽中的每个 HTML 元素(vue获取插槽中的组件)

如何解决从 JavaScript 获取 Vue 插槽中的每个 HTML 元素

我正在 VueJS 2 中创建一个自定义选择组件。该组件将由最终用户如下使用。

  1. <custom-select>
  2. <option value="value 1">Option 1</option>
  3. <option value="value 2">Option 2</option>
  4. <option value="value 3">Option 3</option>
  5. ...
  6. <custom-select>

我知道 Vue <slot> 标签和用法。但是如何让用户提供的 <option> 标签作为 array/list ,以便我可以分别获取其值和文本以在组件内进行自定义呈现?

解决方法

那些 <option> 将在默认插槽数组 (this.$slots.default) 中找到,您可以像这样获得 <option> 的内部文本和值:

  1. export default {
  2. mounted() {
  3. const options = this.$slots.default.filter(node => node.tag === ''option'')
  4. for (const opt of options) {
  5. const innerText = opt.children.map(c => c.text).join()
  6. const value = opt.data.attrs.value
  7. console.log({ innerText,value })
  8. }
  9. }
  10. }

demo

,

您可以使用 v-bind 和计算属性来实现它

  1. new Vue({
  2. el: ''#vue'',data: {
  3. selected: '''',values: [
  4. {
  5. code: ''1'',name: ''one''
  6. },{
  7. code: ''2'',name: ''two''
  8. }
  9. ]
  10. },computed: {
  11. selectedValue() {
  12. var self = this;
  13. var name = "";
  14. this.values.filter(function(value) {
  15. if(value.code == self.selected) {
  16. name = value.name
  17. return;
  18. }
  19. })
  20. return name;
  21. }
  22. }
  23. })
  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
  2. <div id="vue">
  3. <div>
  4. <select v-model="selected">
  5. <option v-for="value in values" v-bind:value="value.code">
  6. {{ value.name }}
  7. </option>
  8. </select>
  9. </div>
  10. <strong>{{ selected }} {{ selectedValue }}</strong>
  11. </div>

1、vue vue2.0 vue-cli vue-router webpack

1、vue vue2.0 vue-cli vue-router webpack

因为网速还可以,所以我就是用了npm下载,可以使用淘宝镜像,把 npm 的地方换成 cnpm 就可以啦!没有安装淘宝镜像的童鞋可以搜搜。。

注:各版本内容(node 7.5.0,npm 4.1.2 ,vue 2.8.1)

查看vue版本vue -V,记得要大写
项目实际安装版本(vue:2.2.2,vue-router:2.3.0,less:2.7.2)

1、npm init webpack sousou

注:(1)sousou是项目名
   (2)创建json数据时不使用router、ESlint、test内容

2、cd sousou
注:进入到创建好的sousou文件夹

3、npm install

 注:下载packjson.json里面设置插件依赖!

4、npm run dev

 注:项目跑起来啦!

补充说明(main .js):

版本一:
    import Vue from ''vue''
    import App from ''./App''
    
    /* eslint-disable no-new */
    new Vue ({
      //  vue 1.x 写法
      el: ''#app'',
      template: ''<App/>'',
      components: { App }                         
    })

版本二:

    import Vue from ''vue''
    import App from ''./App''

     /* eslint-disable no-new */
    new Vue ({
         //  vue 2.x 写法
          el: ''#app'',
          render: x => x(App)                    
    })

大家可以更改过后再运行npm run dev,项目一样可以跑起来哦!

重点在后面

5、因先前没有下载vue-router
现在下载使用命令 :
npm install vue-router less --save-dev
注:因为要使用less预处理器,所以就和vue-router一起下载啦

6、在 src文件夹 下面新建一个 router文件夹,并在其里面新建一个router.js文件
vue-router相关设置可以查看官方中文 文档 https://router.vuejs.org/zh-c...
英文好的童鞋可以查看英文文档。

 import Vue from ''vue''
    import VueRouter from ''vue-router''
    Vue.use(VueRouter)
    
    const First = {template: ''<div>first的内容</div>''}
    const Second = {template: ''<div>second的内容</div>''}
    const Home = {template: ''<div>home的内容</div>''}
    
    const router = new VueRouter({
      mode: ''history'',
      base: __dirname,
      //  记得是routes,不是router,要不然显示不了导航相关页面内容
      routes: [
        {path: ''/'', component: Home},
        {path: ''/first'', component: First},
        {path: ''/second'', component: Second}
      ]
    })
    new Vue({
      router,
      template: `
        <div id = ''new''>
          <h1> 导航 </h1>
          <ul>
            <li><router-link to=''/''> 首页 </router-link></li>
            <li><router-link to=''/first''> 第一 </router-link></li>
            <li><router-link to=''/second''> 第二 </router-link></li>
          </ul>
          <router-view></router-view>
        </div>
        `
    }).$mount(''#app'')

7、main.js只输入,因为main.js是入口文件

import Vue from ''vue''
import Router from ''./router''

8、npm run dev 就可以看到设置的内容啦

今天就先介绍到这里啦!
后续有更新哦!
精彩内容请看后续文档!

Ant Design(React/Vue) 、Element-ui(Vue)、iView(Vue)对比

Ant Design(React/Vue) 、Element-ui(Vue)、iView(Vue)对比

Element-uiiView
表格的合并,api表格操作列按钮用v-for vue指令结合的方式去生成批量元素,气泡卡片,表格头合并, api表格操作列按钮用render 函数内部实现了模板生成,
element 生态更好,使用频率远超过iview ,element开发团队实力更强整体iview 更丰富(icon组件的丰富,级联选择好,时间轴,加载进度条,气泡卡片 ,BackTop,图钉)
element 有内置过渡动画 使得组件的切换变化 更具动感iview 更为中规中矩

antd vue 在 vue.config.js中 自定义主题颜色(定制主题、vue-cli3)

antd vue 在 vue.config.js中 自定义主题颜色(定制主题、vue-cli3)

我在 自定义less变量 时,less、less-loader的版本号不同,会报奇怪的错误
此篇,定制主题 也会根据版本号报不同的错误
最终!我选用的版本 less@3.0.4、less-loader@5.0.0

这篇也基于 less@3.0.4less-loader@5.0.0 进行定制主题操作

一、vue.config.js文件

module.exports = {
  // 增加这部分代码
  css: {
    requireModuleExtension: true,
    loaderOptions: {
      less: {
        modifyVars: {
          // less vars,customize ant design theme
          ''primary-color'': ''#6F48FF'',
          ''link-color'': ''#6F48FF''
        },
        // do not remove this line
        javascriptEnabled: true
      }
    }
  }
  
}

上面的 modifyVars 参数可以自定义各种主题色,以下是常用的几种:

@primary-color: #1890ff; // 全局主色
@link-color: #1890ff; // 链接色
@success-color: #52c41a; // 成功色
@warning-color: #faad14; // 警告色
@error-color: #f5222d; // 错误色
@font-size-base: 14px; // 主字号
@heading-color: rgba(0, 0, 0, 0.85); // 标题色
@text-color: rgba(0, 0, 0, 0.65); // 主文本色
@text-color-secondary: rgba(0, 0, 0, 0.45); // 次文本色
@disabled-color: rgba(0, 0, 0, 0.25); // 失效色
@border-radius-base: 4px; // 组件/浮层圆角
@border-color-base: #d9d9d9; // 边框色
@box-shadow-base: 0 2px 8px rgba(0, 0, 0, 0.15); // 浮层阴影

也可以点击查看 所有样式变量

二、修改antd样式引用文件

因为在步骤一中,我们是在 less 中定义的主题色

对应的,我们在main.js中也需要引用 less格式的antd样式文件

将原本的

import ''ant-design-vue/dist/antd.css''

修改为:

import ''ant-design-vue/dist/antd.less''

三、重新启动,即可生效

在这里插入图片描述

ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction

ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction

1.Action、RenderAction加载办法的视图,履行Controller → Model → View的次序,然后把产生的页面带回到本来的View中再回传。而Partial、RenderPartial直接加载视图文件内容

2.Html.Partial可以直接供给用户控件名作为参数,而Html.Action须要有对应的Action,在Action内部返回PartailResult(即retun PartialView())。

3.对于简单的没有任何逻辑的用户控件,推荐应用Html.Partial;对于须要设置一些Model的用户控件,推荐应用Html.Action。当然,有Model数据也是可以应用Html.Partial办法的,可以看办法的重载。

4.Html.Partial与Html.Action有啥区别呢?区别就是,Html.Partial只有一个视图,而Html.Action除了视图,还真的有个Action跟它对应,所以,Html.Action功能比Html.Partial要强。

 

如何调用这个Html.Partial

 //1、以视图名使用当前文件夹下的视图(如果没有找到,则搜索 Shared 文件夹)
@Html.Partial( "_test" //加载对应文件 /Views/Product/_test.cshtml
 
//2、依据应用根路径定位视图// 以 "/" 或 "~/" 开头的路径代表应用根路径
@Html.Partial( "~/Views/Product/_test.cshtml" )
@Html.Partial( "/Views/Product/_test2.cshtml" )
 
//3、加载其他目录的 视图文件
//注意:需要复制views中的web.config 到template目录,否则会提示  "/template/A.cshtml”处的视图必须派生自 WebViewPage 或 WebViewPage<TModel>"
@Html.Partial( "/template/A.cshtml" )

今天关于从 JavaScript 获取 Vue 插槽中的每个 HTML 元素vue获取插槽中的组件的介绍到此结束,谢谢您的阅读,有关1、vue vue2.0 vue-cli vue-router webpack、Ant Design(React/Vue) 、Element-ui(Vue)、iView(Vue)对比、antd vue 在 vue.config.js中 自定义主题颜色(定制主题、vue-cli3)、ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction等更多相关知识的信息可以在本站进行查询。

本文标签:

上一篇添加除法中的所有元素并将其附加到 jquery 而不触及 html

下一篇关于使用 Java 框架构建无服务器应用程序的深入探讨(java服务端框架)