2016-08-10 2 views
2

У меня есть некоторые проблемы с визуальным композитором. Невозможно получить поддержку из-за старых версий. Клиент не заплатит. Проблема в том, что я не могу добавить элемент в бэкэнд. Ошибка в хромированной отладки:uncaught typeError не может прочитать атрибуты свойств неопределенного визуального композитора

Я пытался решить проблему с кодом: Uncaught TypeError: Не удается прочитать свойство 'атрибуты' неопределенной

<pre> 
html2element @ composer-view.js?ver=4.7.4:156 
render   @ composer-view.js?ver=4.7.4:163 
addShortcode @ composer-view.js?ver=4.7.4:232 
addShortcode @ composer-view.js?ver=4.7.4:561 
_    @ load-scripts.php?c=0&load[]=thickbox,hoverIntent,common,admin-bar,word-count,suggest,wp-ajax-respon…:474 
m    @ load-scripts.php?c=0&load[]=thickbox,hoverIntent,common,admin-bar,word-count,suggest,wp-ajax-respon…:474 
f    @ load-scripts.php?c=0&load[]=thickbox,hoverIntent,common,admin-bar,word-count,suggest,wp-ajax-respon…:474 
l.trigger  @ load-scripts.php?c=0&load[]=thickbox,hoverIntent,common,admin-bar,word-count,suggest,wp-ajax-respon…:474 
ListenerHelper.triggerShortcodeEvents @ events.js?ver=4.7.4:19 
(anonymous function) @ composer-view.js?ver=4.7.4:977 
and alot fo load script errors 
</pre> 

Код:

html2element: function(html) { 
var $template, attributes = {}, 
    template = html; 
$template = $(template(this.model.toJSON()).trim()), _.each($template.get(0).attributes, function(attr) { 
    attributes[attr.name] = attr.value 
}), this.$el.attr(attributes).html($template.html()), this.setContent(), this.renderContent() 
}, 

I проверили все в Интернете и stackoverflow, я не могу найти проблему для этой проблемы.

+1

От ошибки у вас есть проблемы в этой строке $ template.get (0) .attributes. Таким образом, $ template.get (0) возвращает undefined. Убедитесь, что у вас есть результат с помощью метода get. Надеюсь это поможет. –

+0

Привет Микола. Я получаю код html в консоли, когда я регистрирую var $ templets.get (0), это означает, что он не определяет правильность? Isnt. Атрибуты старые? Не должно быть. Атр? – mmmttzz

+0

Ну .. у вас есть итерация там _.ах. Возможно, первый элемент не является неопределенным, но некоторые могут быть. Например, попробуйте всегда console.log $ template.get (0) до _.each. также добавлять журналы ко всем переменным. И проверьте, может быть, у вас есть дополнительный материал в $ template, который вы не ожидаете. Надеюсь это поможет. –

ответ

6

Лучшее решение заменить html2element код & визуализации кода в представлении композитора к следующему коду

html2element: function(html) { 
      var attributes = {}, 
       $template; 
      if (_.isString(html)) { 
       this.template = _.template(html); 
       $template = $(this.template(this.model.toJSON(), vc.templateOptions.default).trim()); 
      } else { 
       this.template = html; 
           $template = $(this.template(this.model.toJSON(), vc.templateOptions.default).trim()); 
      } 

      _.each($template.get(0).attributes, function(attr) { 
       attributes[attr.name] = attr.value; 
      }); 
      this.$el.attr(attributes).html($template.html()); 
      this.setContent(); 
      this.renderContent(); 

     }, 
     render: function() { 
      var $shortcode_template_el = $('#vc_shortcode-template-' + this.model.get('shortcode')); 
      if ($shortcode_template_el.is('script')) { 
       this.html2element(_.template($shortcode_template_el.html())); 
      } else { 
       var params = this.model.get('params'); 
       $.ajax({ 
        type: 'POST', 
        url: window.ajaxurl, 
        data: { 
         action: 'wpb_get_element_backend_html', 
         data_element: this.model.get('shortcode'), 
         data_width: _.isUndefined(params.width) ? '1/1' : params.width, 
         _vcnonce: window.vcAdminNonce 
        }, 
        dataType: 'html', 
        context: this 
       }).done(function(html) { 
        this.html2element(html); 
       }); 
      } 
      this.model.view = this; 
      this.$controls_buttons = this.$el.find('.vc_controls > :first'); 
      return this; 
     }, 

Soruce: https://gist.github.com/maximspokoiny/34ad60ad90944f8a80c6fc093873a807/9fb041d2b12249fe4391f986f4e7e6a08f57c6b3#file-gistfile1-txt

+0

Это сработало для меня. Изменение только html2element дало мне ошибку Undefined attribute, но изменение функции рендеринга устранило проблему. –

Смежные вопросы