VueJS $设置了变量keypath

时间:2016-04-07 09:46:16

标签: javascript vue.js

我目前正在处理一个简单的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); } } 值吗?

1 个答案:

答案 0 :(得分:-1)

我也遇到过类似问题,删除变量-,这些变量nl-NL, de-NL更改为nlNl, deNl 我不使用

obj.$set('page.media[element.locale]', data.media)

obj.$set('page.media.'+element.locale, data.media); 

然后它工作