js-data.io 作为 Vue.js 存储
js-data.io as Vue.js store
我想使用 js-data 3.0.1 作为我的 Vue.js 2.4.2 SPA 的商店。一切都很顺利,但不幸的是我无法使反应式数据绑定正常工作。
我已经试过了vue-js-data,好像坏了
下面的例子不成立。如果我更改文本字段,文本将不会更新。但是,如果我用普通的旧 JS 对象替换 js-data 记录,它会像预期的那样工作。
user.vue
:
<template>
<div>
<input name="name" v-model="user.name" />
<br />
Name: {{user.name}}
</div>
</template>
<script>
export default {
data() {
return {
user: this.store.createRecord('user')
}
}
}
</script>
感谢您提供有关如何使数据绑定(例如通过 v-model
)起作用的任何建议。
如果将此添加到 User
class 的 constructor
,它应该适用于所有根级属性。有关完整示例,请参见此处:https://gist.github.com/calebroseland/2fa37abdb5560739b3b4b901382b0a90
// apply vue reactivity
for (let key in this) {
Vue.util.defineReactive(this, key, this[key])
}
// re-apply js-data schema
this._mapper().schema.apply(this)
Vue 和 Js-Data 反应性不能开箱即用的原因是它们都有单独的实现,使用的机制略有不同。这是一个解释:https://medium.com/p/525ffe12ad81#c925
我想使用 js-data 3.0.1 作为我的 Vue.js 2.4.2 SPA 的商店。一切都很顺利,但不幸的是我无法使反应式数据绑定正常工作。
我已经试过了vue-js-data,好像坏了
下面的例子不成立。如果我更改文本字段,文本将不会更新。但是,如果我用普通的旧 JS 对象替换 js-data 记录,它会像预期的那样工作。
user.vue
:
<template>
<div>
<input name="name" v-model="user.name" />
<br />
Name: {{user.name}}
</div>
</template>
<script>
export default {
data() {
return {
user: this.store.createRecord('user')
}
}
}
</script>
感谢您提供有关如何使数据绑定(例如通过 v-model
)起作用的任何建议。
如果将此添加到 User
class 的 constructor
,它应该适用于所有根级属性。有关完整示例,请参见此处:https://gist.github.com/calebroseland/2fa37abdb5560739b3b4b901382b0a90
// apply vue reactivity
for (let key in this) {
Vue.util.defineReactive(this, key, this[key])
}
// re-apply js-data schema
this._mapper().schema.apply(this)
Vue 和 Js-Data 反应性不能开箱即用的原因是它们都有单独的实现,使用的机制略有不同。这是一个解释:https://medium.com/p/525ffe12ad81#c925