Vue.js NativeScript Vue更新数据对象?

Vue.js NativeScript Vue更新数据对象?,vue.js,nativescript,nativescript-vue,Vue.js,Nativescript,Nativescript Vue,是否可以使用新属性更新数据对象 数据来自外部源,因此数据不包含是否显示对象内容的标志是合理的 <RadListView for="item in list" @itemTap="accordion"> <v-template> <StackLayout> <Label :text="item.title" /> </StackLayout> <Stac

是否可以使用新属性更新数据对象

数据来自外部源,因此数据不包含是否显示对象内容的标志是合理的

<RadListView for="item in list" @itemTap="accordion">
    <v-template>
        <StackLayout>
            <Label :text="item.title" />
        </StackLayout>
        <StackLayout v-bind:height="item.toggled? 'auto' : 0">
            <Label :text="item.desc" />
        </StackLayout>
    </v-template>
</RadListView>
因此,“列表”对象不包含切换属性,但我试图在用户单击UI中的某个项目时展开/折叠desc区域

我的代码按原样返回e.item.toggled,但UI不更新 未定义->真->假->真->假->

更新:

根据@sundeqvist的建议,我通过手风琴方法传递了item元素

我还修改了如何将toggled属性修改为数据对象list。通过直接添加,控制台将该值显示为真布尔值,而不是Vue[Getter/Setter]值

<RadListView for="item in list">
    <v-template>
        <StackLayout @itemTap="accordion(item)">
            <Label :text="item.title" />
        </StackLayout>
        <StackLayout v-bind:height="item.toggled? 'auto' : 0">
            <Label :text="item.desc" />
        </StackLayout>
    </v-template>
</RadListView>

您确定要访问方法中的项吗

通过将项传递到accordion方法调用中:

然后在方法中,在作为参数传入的项上切换toggle属性:

accordion(item) {
  item.toggled = !item.toggled;
}

你应该能够让它工作。

我想你让我走对了路,尽管我不确定这是不是正确的路-我将@itemTap=accordionitem向下移动到StackLayout元素-代码接收外部数据的地方,而不是给对象分配属性,我做了一个扩展{toggled:false,…data}-然后切换到vue[getter/setter]它看起来正在工作,但控制台使它看起来好像正在触发一个整体重画?整个阵列的重画?听起来很奇怪。。。你解决了吗?如果你能吐出一支密码笔,我就能查出来!
export default{
    data(){
        return{
            list: [
                { "title" : "Sample Title", "desc" : "Lorem Ipsum" },
                { "title" : "New Title", "desc" : "Test 123 Test" }
            ]
        }
    },
    methods: {
        accordion: function(item){
            item.toggled = !item.toggled;
        },
        loadData: function(){ ... },
        generateData: function( data ){
            let dataArr = [];
            for( let d in data ){
                d = { "toggled" : false, ...d };
                dataArr.push( d );
            }
            this.list = dataArr;
        }
    }
}
accordion(item) {
  item.toggled = !item.toggled;
}