2.5.21
https://codepen.io/AmrIKhudair/pen/NevxML
1- criar uma classe de extensão Array e adicionar um método personalizado
2- instanciar uma nova instância da classe e adicioná-la aos dados
3- tente chamar o método na instância do template
O método foi executado com sucesso
Erro não é uma função
O Vue 2 atualmente não oferece suporte a subclasses de Array (o ramo de desenvolvimento do Vue 3 já oferece). Vou converter isso em uma solicitação de recurso.
@AmrIKhudair
Eu também precisava disso e fiz com que funcionasse no terreno do usuário. Quando o Vue 3 chegar, você pode removê-lo.
export function makeReactive (obj) {
// eslint-disable-next-line no-proto
const proto = obj.__proto__
Object.defineProperty(obj, '__proto__', {
get () { return proto },
// eslint-disable-next-line no-proto
set (newValue) { proto.__proto__ = newValue }
})
}
import { makeReactive } from 'util'
export default class UserCollection extends Array {
constructor (...args) {
super(...args)
makeReactive(this)
}
}
@edcoreweb
Muito obrigado
Comentários muito úteis
@AmrIKhudair
Eu também precisava disso e fiz com que funcionasse no terreno do usuário. Quando o Vue 3 chegar, você pode removê-lo.