Dies scheint in meinem Browser-Konsole zu verstehen:Der Versuch, "unbestimmt" Warnung in Vue.js
[Vue warn]: Error when evaluating expression "permissions.edit": TypeError: Cannot read property 'edit' of undefined (found in component: <heading>)
Verwandte Code:
{{ permissions | json }}
<a class="button" v-on:click="toggleEditMode" v-if="permissions.edit">{{ editMode ? 'Save' : 'Edit' }}</a>
Ergebnisse in:
Berechtigungen sind offensichtlich nicht undefiniert. Was ist los? Um die Sache verwirrender zu machen, wenn ich ein literales Objekt an die Komponente übergebe (:permissions="{edit: true}"
), verschwindet die Warnung, aber die Ausgabe von json von {{ permissions | json }}
sieht genau gleich aus.
Das Problem scheint zu sein, dass Sie die 'edit' Eigenschaft irgendwie so hinzugefügt haben, dass Vue es nicht bemerkt hat. (Der JSON-Filter kümmert sich nicht um die Reaktivität, daher spielt es dort keine Rolle) Wann und wie erstellen/füllen Sie das Berechtigungsobjekt? Ändern Sie es irgendwo, in einem 'ready()' Haken oder etwas? Haben Sie das Objekt 'Berechtigungen' in den Komponenten' data' mit der Eigenschaft 'edit' bereits definiert? Dies sind relevante Informationen, die wir brauchen. –
Es ist eine Serverantwort von vue-resource, erstellt in der 'created()' Methode meines ViewModels. Es wird dem ViewModel mit 'this. $ Set' zugewiesen und als Prop in meiner Vorlage übergeben. – fpcjh
Da gehen wir hin. Der APi-Aufruf mit vue-resource ist asynchron, das heißt, Vue wartet nicht auf den Abschluss, sondern kompiliert die Vorlage weiter, was viel schneller als der API-Aufruf geschieht. Wenn Vue "permissions.edit" auswertet, wurde es noch nicht festgelegt, da der API-Aufruf immer noch im Hintergrund läuft. Sobald dieser Aufruf beendet ist, wird 'Berechtigungen' richtig gesetzt und Ihre Vorlage funktioniert wie erwartet. –