不得不问一些看似简单的事情,我觉得自己像个白痴,但我正试图弄清楚如何在 VueJS 中使用“枚举”。目前,在一个名为LandingPage.js我的文件中,有这么一段代码:
const Form = {
LOGIN: 0,
SIGN_UP: 1,
FORGOT_PASSWORD: 2,
};
function main() {
new Vue({
el: "#landing-page",
components: {
LoginForm,
WhoIsBehindSection,
WhatIsSection,
Form,
},
data () {
return {
form: Form.LOGIN,
};
},
template: `
<div>
<LoginForm v-if="form === Form.LOGIN"></LoginForm>
<WhatIsSection></WhatIsSection>
<WhoIsBehindSection></WhoIsBehindSection>
</div>
`
});
}
Run Code Online (Sandbox Code Playgroud)
这是v-if="form === Form.LOGIN"错误消息失败的条件:
属性或方法“Form”未在实例上定义,而是在渲染期间引用。通过初始化属性,确保此属性是反应性的,无论是在数据选项中,还是对于基于类的组件。
无法读取未定义的属性“登录”
只是让你们知道没有条件一切都在工作,如果我把这个位放在模板中
<p>{{ form }}</p>
Run Code Online (Sandbox Code Playgroud)
它将打印0在屏幕上。虽然,把它放在模板中
<p>{{ Form.LOGIN }}</p>
Run Code Online (Sandbox Code Playgroud)
不会导致它打印0在屏幕上。所以我终其一生都无法弄清楚为什么它不会接受Form.LOGIN。
答案
我确实将它添加到components,但我从未想过将它添加到data. …
我最近开始工作的一家公司在某个时间点设法删除了他们的一个迁移文件 - 或者至少我是这么认为的。该文件创建了一个表users,但该表已被删除。
我通常不会介意,如果不是因为本地构建项目会失败,除非我暂时硬塞在包括此表创建在内的早期迁移中,这是因为后来的迁移都会修改此假定表上的列,并users最终删除表格。我最近所做的只是将其添加到正在创建其他表的现有迁移文件中,比如说products,我一直在从一个分支“携带”到另一个分支,非常小心,不要提交它。
它看起来像这样(示例):
class AddProductsTable < ActiveRecord::Migration
def change
create_table :products do |t|
end
end
end
Run Code Online (Sandbox Code Playgroud)
我已更改为:
class AddProductsTable < ActiveRecord::Migration
def change
create_table :products do |t|
end
create_table :users do |t|
end
end
end
Run Code Online (Sandbox Code Playgroud)
我本质上想知道这样做是否会对生产造成任何损害。毕竟,迁移已经运行了,所以不会再次执行吗?我很想这样做,因为它很快就变旧了,当我需要重建时,总是记得重新创建或携带这段代码,但我没有足够的信心,认为不好的事情不会发生,也不会发生。我在谷歌上找到了很多答案。
PS.,我是该项目目前唯一的开发人员,他们没有任何其他开发人员可以向我询问这个问题。