【发布时间】:2018-09-11 23:12:45
【问题描述】:
预期结果:来自响应的数据显示在模式上
实际结果:响应中的数据未显示在模态中
上下文:我正在使用表单将数据提交给搜索功能,并承诺从数据库中获取结果。当我提交时,我还会打开一个模式来显示结果。模式已经打开,带有一个名为 allResults 的属性,该属性为空。我试图了解如何将我从已解决的承诺中获得的数据绑定到连接到模态的allResults 属性。或者换句话说,当 promise 被解决时如何触发属性“刷新”。当我实现 watch 或 computed 属性时,它们会在返回数据之前被调用。
属性:
data () {
return {
allResults: [],
query: ''
}}
搜索功能使用graphql apollo:
onSubmit () {
this.$apollo.query({
query: FIND_PEOPLE,
variables: {
name: this.query
}
}).then((response) => {
let a = response.data.given_names # array
let b = response.data.family_names # array
let c = []
a.forEach(function(el) {
if (!c.includes(el)) {
c.push(el)
}
})
var result = c.map(a => a.id);
b.forEach(function(el) {
if (!result.includes(el.id)) {
c.push(el)
}
})
this.allResults.people = []
this.allResults.people = c
this.allResults.clubs = response.data.clubs
});
}
形式:
<b-nav-form @submit="onSubmit">
<b-form-input size="sm" class="mr-sm-2" type="text" v-model="query" id="navbar-search-input" />
<b-button size="sm" class="my-2 my-sm-0" v-b-modal="'search-results-modal'" type="submit">Zoek</b-button>
</b-nav-form>
模态:
<SearchResultsModal :all-results="allResults" :query="query"/>
模态组件:
<b-modal hide-footer ref="searchResultsModal" id="search-results-modal">
<p>{{"Searchterm: " + this.query}}</p>
<ul v-for="result of this.allResults.people" :key="result.id">
<li><b-link @click="selectResult('person', result.id)">{{result|personFullName}}</b-link></li>
</ul>
</b-modal>
道具:
props: ['allResults', 'query'],
附加上下文:
请指教
【问题讨论】:
-
我认为这完全取决于
SearchResultsModal对其allResults属性的作用。另外,应该是:all-results="allResults"吗?见stackoverflow.com/a/52275413/283366 -
感谢您指出 kebab-case 的改进。
SearchResultsModal将allResults显示为链接列表。 -
所以在修复属性后(如果需要),它仍然无法正常工作?我实际上是在问你对组件中的
prop值做了什么;它是如何分配或使用的?请显示一些实际代码 -
修复是一个风格问题,它仍然有效。根据您的要求添加代码。
-
“它仍然有效”
标签: javascript vue.js promise