2016-06-02 1 views
1

Après avoir suivi les instructions ci-here, j'ai reçu l'erreur suivante dans les outils de développement de Google Chrome:app Agile exemple Central ne

sdk-debug.js:147611 Error: success callback for Deferred transformed result of Deferred transformed result of Deferred threw: TypeError: Cannot read property 'project' of undefined 
at Ext.define.getFullyQualifiedName (sdk-debug.js:163998) 
at Ext.define.build (sdk-debug.js:164052) 
at Ext.define.buildCompositeArtifact (sdk-debug.js:164152) 
at Ext.define.getModel (sdk-debug.js:196664) 
at Ext.define._buildColumnsFromModel (sdk-debug.js:196985) 
at Ext.define._parseColumns (sdk-debug.js:196977) 
at sdk-debug.js:146417 
at Ext.define.notify (sdk-debug.js:146514) 
at Ext.define.register (sdk-debug.js:146481) 
at Ext.define.then (sdk-debug.js:146299) 

JSONP est activé sur mon abonnement, et je l'ai obtenu des messages à lire sur mon console. En outre, j'ai obtenu des services Web pour répondre avec succès aux demandes. Celui-là est nouveau pour moi. Ce "devrait" fonctionner, mais ce n'est pas le cas. Est-ce un bug avec l'exemple lui-même? Le code source complet de l'exemple que j'ai implémenté est here.

Répondre

1

Wow, comme c'est embarrassant. C'est certainement un bug avec le composant Rally.ui.cardboard.CardBoard. Sur le plan positif, vous pouvez contourner ce problème en incluant simplement le contexte actuel dans votre exemple de code.

var cardBoardConfig = { 
    xtype: 'rallycardboard', 
    types: ['Defect', 'User Story'], 
    attribute: 'ScheduleState', 

    context: this.getContext(), //<-- NEW CODE HERE 

    storeConfig: { 
     filters: [this.iterationCombobox.getQueryFromSelected()] 
    } 
}; 

Il est généralement une bonne pratique de fournir le contexte actuel à tous les composants de toute façon, mais tous les composants doivent également être assez intelligent pour simplement utiliser la valeur par défaut si elle n'est pas spécifié.

Je vais déposer un défaut pour réparer le composant de la carte de carte pour utiliser correctement le contexte par défaut et aussi pour corriger l'exemple pour passer explicitement le contexte. Merci d'avoir signalé ce problème et désolé pour le problème!

+0

Ajout du contexte attribut fixed la question . J'apprécierais que ce changement soit dans votre documentation plus tôt que tard. De plus, veuillez noter que vos exemples nécessitent que JSONP soit activé. Ceci n'est pas non plus noté dans la documentation des exemples. –

+0

Les docs seront mis à jour avec le contexte sous peu. En outre, vous n'avez besoin que de JSONP si vous lancez l'application directement à partir du système de fichiers. La méthode préférée est maintenant d'utiliser Rally App Builder, qui est discuté en détail dans la section Getting Started ... –

+0

Kyle, au risque de sonner argumentatif, la méthode discutée pour le lancement des apps est d'afficher la page App-debug.html et rafraîchissant. Bien qu'il puisse y avoir une note de bas de page dans les documents quelque part qui dit ce que vous dites, vous devez être explicite. Subtle est trop mignon de moitié. –

0

Cela semble être un problème avec la façon dont la configuration de Rallycardboard gère les entrées dans l'attribut "types:". Si vous avez 'User Story' ou 'Defect', cela fonctionnera. Cependant, si vous avez les deux, ce ne sera pas le cas.

Cela fonctionne:

var cardBoardConfig = { 
     xtype: 'rallycardboard', 
     types: ['Defect'], 
     attribute: 'ScheduleState', 
     storeConfig: { 
      filters: [this.iterationCombobox.getQueryFromSelected()] 
     } 
    }; 
    this.cardBoard = this.add(cardBoardConfig); 

Cela fonctionne:

var cardBoardConfig = { 
     xtype: 'rallycardboard', 
     types: ['User Story'], 
     attribute: 'ScheduleState', 
     storeConfig: { 
      filters: [this.iterationCombobox.getQueryFromSelected()] 
     } 
    }; 
    this.cardBoard = this.add(cardBoardConfig); 

Cette (copié directement à partir de l'exemple cité) ne fonctionne pas:

var cardBoardConfig = { 
     xtype: 'rallycardboard', 
     types: ['User Story', 'Defect'], 
     attribute: 'ScheduleState', 
     storeConfig: { 
      filters: [this.iterationCombobox.getQueryFromSelected()] 
     } 
    }; 
    this.cardBoard = this.add(cardBoardConfig);