2017-11-09 4 views
0

Ich bekomme eine Uncaught TypeError: Cannot read property 'posts' of undefined aus dem Wordpress-Plugin, das ich benutze. Ich habe versucht, den Ersteller des Plugins zu fragen, bekam aber keine Antwort.TypeError: Kann die Eigenschaft 'Posts' von undefined nicht lesen

Der Fehler kommt aus dieser Funktion:

plugin.setButtonData = function() 
{ 
    plugin.data.postid = $(plugin.activeButton).attr('data-postid'); 
    plugin.data.siteid = $(plugin.activeButton).attr('data-siteid'); 
    plugin.data.favorite_count = $(plugin.activeButton).attr('data-favoritecount'); 
    plugin.data.site_index = plugin.utilities.siteIndex(plugin.data.siteid); 
    plugin.data.site_favorites = Favorites.userFavorites[plugin.data.site_index].posts; 
    if (plugin.data.favorite_count <= 0) plugin.data.favorite_count = 0; 
} 

und ich habe das Problem eingegrenzt zu sein, dass (vorletzte Zeile Code) als undefiniert zurückgibt. Wenn ich es durch eine hartcodierte 1 ersetze, verschwindet der Fehler.

wird durch die folgende Funktion erzeugt, die ist, wo das ursprüngliche Problem sein muss:

plugin.siteIndex = function(siteid) 
{ 
    for (var i = 0; i < Favorites.userFavorites.length; i++){ 
     if (Favorites.userFavorites[i].site_id !== parseInt(siteid)) continue; 
     return i; 
    } 
} 

Leider habe ich keine Ahnung, was hier schief gehen könnte. Bitte beachten Sie, dass ich in einer Wordpress Multisite-Umgebung arbeite (die das Plugin unterstützt).

Sie können den vollständigen JS-Code here sehen.

Antwort

0

plugin.data.site_favorites = Favorites.userFavorites[plugin.data.site_index].posts; 

zu

plugin.data.site_favorites = plugin.data.site_index >= 0 ? 
    Favorites.userFavorites[plugin.data.site_index].posts : ''; 

Ihr Code würde Arbeit austauschen.

Ich denke, dass der Fall, wenn plugin.siteIndex(siteid) return undefined das Problem macht.

Verwandte Themen