我目前正在处理一个简单的filemanager组件,它是从父组件触发的。在文件管理器I null
中选择一个带有2个键的简单数据对象:element&amp;媒体。我使用元素来跟踪我想要将媒体附加到当前数据对象的位置,并且媒体具有媒体信息(id,类型,名称等)。当我想将<ul>
<li ng-repeat="item in items" ng-class="item.setClass" ng-click="assignClass(item)">
{{item.name}}
</li>
</ul>
$scope.assignClass = function(selectedItem){
selectedItem.setClass = "sampleClass";
}
媒体数据发送到数据对象中的变量时,这个设置给我带来了一些麻烦。变量是locales,因此:nl-NL,de-NL等等。
$dispatch
运行此代码时会发生的情况是数据对象在Vue Devtools数据对象中正确显示,但媒体未显示在模板中。当我切换语言时(通过更改$set
值),媒体确实会显示。
我认为这与对象keypath中的变量有关,但我并不是100%肯定。有关如何改进此代码的任何想法,以便我可以在父组件中显示所选媒体而无需更改setMediaForPage : function(data){
if(!this.page.media[this.selectedLanguage]['id'])
{
// set for all locales
var obj = this;
this.application.locales.forEach(function(element, index, array) {
obj.$set(obj.page.media[element.locale], data.media);
})
}
else
{
// set for 1 locale
this.$set(this.page.media[this.selectedLanguage], data.media);
}
}
值吗?
答案 0 :(得分:-1)
我也遇到过类似问题,删除变量-
,这些变量nl-NL, de-NL
更改为nlNl, deNl
我不使用
obj.$set('page.media[element.locale]', data.media)
但
obj.$set('page.media.'+element.locale, data.media);
然后它工作