<item :app="self" name="item1" />
<item :app="self" name="item2" />
export default {
item1: {
name: 'Item_1',
is_availible: function (app) {
return app.var1>2 || app.var2=1;
},
do_action:function (app) {
app.doSomeAction();
}
},
item2: {
name: 'Item_2',
is_availible: function (app) {
return app.var3 && (app.var4||app.var5);
},
do_action:function (app) {
app.doAnotherAction();
}
},
}
import data from '@/items.js'
export default {
props: {
name: String,
app: Object
},
data: function () {
return {
item_name: data[this.name].name,
isavailible: data[this.name].is_availible,
doaction: data[this.name].do_action,
}
},
}
computed: {
is_availible () {
return this.isavailible(this.app);
}
},
methods: {
do_action () {
this.doaction(this.app);
}
}
<template>
<p v-if="is_availible" @click="do_action()">{{item_name}}</p>
</template>
По-сути такая функция — это большой свитч
{
service_limit: 60, // ветка свитч сравнивающая значение с датой последнего обслуживания (два месяца)
materials: ['material1','material2'] // ветка проверяющая наличие расходников
}
{
service_limit: 150, // ветка свитч сравнивающая значение с датой последнего обслуживания
motor_hour_limit: 200 // ветка сравнивающая наработку мотор часов
}
вопрос, а чем отличаются ваши объекты, они имеют идентификаторы? Является ли идентификатором поле name?
import Button from 'Button.vue'
import Vue from 'vue'
var ComponentClass = Vue.extend(Button)
var instance = new ComponentClass()
instance.$mount() // pass nothing
this.$refs.container.appendChild(instance.$el)
А как быть, если у В есть зависимость от С, а у С несколько реализаций. И у него тоже есть зависимости. Как разрешать зависимости на более глубоких уровнях? В Pure DI это выливается в неиспользуемые классом зависимости, которые он просто пробрасывает своим зависимостям. Но принять он их обязан.