文章目录
需要实现级联选择器动态拿到每一层级的数据并显示,同时在编辑数据时弹框回显对应的层级关系。

给组件添加 :checkStrictly="true" 这个属性就可以实现单独勾选一级、二级、三级组织关系。(官方api没有写)
首先先在html里 模态框上写上a-cascader组件
<a-modal v-model="uploadNew" :title="title" :width="800" :footer="null" @cancel="resetForm">
<a-form-model :model="addForm" :label-col="labelCol" :wrapper-col="wrapperCol" ref="addForm" :rules="roleRules">
<a-form-model-item label="所属组织" prop="orgIds">
<a-cascader v-model="addForm['orgIds']"
:options="options"
change-on-select
@change="onChange"
:load-data="loadData"
:checkStrictly="true"
placeholder="选择组织" />
</a-form-model-item>
<a-form-model-item :wrapper-col="{ span: 14, offset: 10 }">
<span @click="onSubmit" style="cursor: pointer">
提交
</span>
<span @click="resetForm" style="margin-left: 100px;cursor: pointer">
取消
</span>
</a-form-model-item>
</a-form-model>
</a-modal>
data() {
return {
options: []
}
},
先实现只有动态加载数据的功能(根据官网https://1x.antdv.com/components/cascader-cn/示例即可实现)
options: [
{
value: 'zhejiang',
label: 'Zhejiang',
isLeaf: false,//是否叶子节点
children:[]
},
{
value: 'jiangsu',
label: 'Jiangsu',
isLeaf: false,
},
],
注意:(初始化时会先获取第一层级的数据)
//获取一级组织
async getOneList(){
try {
let par={
parentId:''
}
const res = await getOrgOneList(par)
this.roleOneList=res.data.data
this.roleOneList.forEach(item=>{
let temp={
value:item.id,
label:item.orgName,
isLeaf:false,
}
this.options.push(temp)
})
} catch (error) {
console.log(error)
}
},
async loadData(selectedOptions) {
const targetOption = selectedOptions[selectedOptions.length - 1];
this.levelIndex=selectedOptions.length+1 //点第几级组织,selectedOptions长度就是几,点3级时,没有叶子节点,不会进入这个方法(这里只会等于2,3)
targetOption.loading = true;
let parentId=targetOption.value//根据父id才能查询子数组
await this.getOrgTwoList(parentId)//这个方法是掉接口,返回2,3级数据,下方有该方法
targetOption.loading = false;
if(this.levelIndex<=3){
targetOption.children = this.roleTwoList
}
this.options = [...this.options];
},
onChange(value) {
this.roleCheck=value
console.log(value,'sel')
},
//根据父id获取2,3级组织列表
async getOrgTwoList(id){
try {
let par={
parentId:id
}
const res = await getOrgOneList(par)//掉接口,获取下一层级数据
this.roleTwoList=[]
res.data.data.forEach(item=>{
let temp={
value:item.id,
label:item.orgName,
isLeaf: this.levelIndex==3?true:false//判断是否是叶子节点
}
this.roleTwoList.push(temp)
})
} catch (error) {
console.log(error)
}
},
在上面基础上,实现编辑的时候数据回显
//编辑用户
async editUser(row){
this.addForm=Object.assign({},row)
this.addForm.orgIds=row.orgIds.split(',')//数据需要转成数组的格式
for (let i = 0; i < this.addForm.orgIds.length - 1; i++) {
await this.getNextList(this.addForm.orgIds[i])//获取下一层级的数据
}
this.uploadNew=true//显示弹框
},
方法实现
//根据父id获取下一层级数据
async getNextList (targetOption) {
let obj = {
parentId: targetOption
}
const res = await getOrgOneList(obj)//掉接口,获取下一层级数据
const list = res.data.data.map((item) => {
// dLevel == 3 时表示是叶子节点
this.$set(item,'isLeaf',item.dLevel == 3)
this.$set(item,'value',item.id)
this.$set(item,'label',item.orgName)
return item
})
//初始化时,this.options包含全部第一层级的数据
this.options.forEach((item) => {
if (item.children) {
item.children.forEach((ite) => {
if (ite.value == targetOption ) {
this.$set(ite,'children',list)
// ite['children'] = list
}
})
}
if (item.value == targetOption) {//数据value值等于父id
this.$set(item,'children',list)
}
})
this.options = [...this.options]
},
以上getOrgTwoList和getNextList方法都是根据父id获取下一层级(2,3级)数据,可优化。
鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co
状态:我正在构建一个应用程序,其中需要一个可供用户选择颜色的字段,该字段将包含RGB颜色代码字符串。我已经测试了一个看起来很漂亮但效果不佳的。它是“挑剔的颜色”,并托管在此存储库中:https://github.com/Astorsoft/picky-color.在这里我打开一个关于它的一些问题的问题。问题:请建议我在Rails3应用程序中使用一些颜色选择器。 最佳答案 也许页面上的列表jQueryUIDevelopment:ColorPicker为您提供开箱即用的产品。原因是jQuery现在包含在Rails3应用程序中,因此使用基
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
有没有办法在Ruby中动态创建数组?例如,假设我想遍历用户输入的书籍数组:books=gets.chomp用户输入:"TheGreatGatsby,CrimeandPunishment,Dracula,Fahrenheit451,PrideandPrejudice,SenseandSensibility,Slaughterhouse-Five,TheAdventuresofHuckleberryFinn"我把它变成一个数组:books_array=books.split(",")现在,对于用户输入的每一本书,我想用Ruby创建一个数组。伪代码来做到这一点:x=0books_array.
我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or
我想在IRB中浏览文件系统并让提示更改以反射(reflect)当前工作目录,但我不知道如何在每个命令后进行提示更新。最终,我想在日常工作中更多地使用IRB,让bash溜走。我在我的.irbrc中试过这个:require'fileutils'includeFileUtilsIRB.conf[:PROMPT][:CUSTOM]={:PROMPT_N=>"\e[1m:\e[m",:PROMPT_I=>"\e[1m#{pwd}>\e[m",:PROMPT_S=>"FOO",:PROMPT_C=>"\e[1m#{pwd}>\e[m",:RETURN=>""}IRB.conf[:PROMPT_MO
我希望用户从一个模型的三个选项中选择一个。即我有一个模型视频,可以被评为正面/负面/未知目前我有三列bool值(pos/neg/unknown)。这是处理这种情况的最佳方式吗?为此,表单应该是什么样的?目前我有类似的东西但显然它允许多项选择,而我试图将它限制为只有一个..怎么办? 最佳答案 如果要使用字符串列,让我们说rating。然后在你的表单中:#...#...它只允许一个选择编辑完全相同但使用radio_button_tag: 关于ruby-on-rails-Rails单选按钮-模
我的Rails应用程序中安装了carrierwave。但是,当用户上传多页pdf时,我只希望应用程序获取文档中的第一页并将其转换为jpeg。这可能吗?用什么命令?这是我的uploader。#encoding:utf-8classImageUploader[200,300]##defscale(width,height)##dosomething#end#Createdifferentversionsofyouruploadedfiles:version:thumbdoprocess:resize_to_fill=>[150,210]process:convert=>:jpgdefful