当我使用名为WpBakery Visual Composer的插件时,我在WordPress中收到此错误。
我使用的是最新版本的WordPress(4.5),使用最新的Google Chrome版本,所有插件都已更新。我似乎无法使用Visual Composer添加任何元素或模板。
有人可以帮助我或告诉我可能会发生什么以及如何解决此错误。
我得到的错误:
答案 0 :(得分:97)
请参阅我的回答here.
我通过将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()
},
函数更新为:
/wp-content/plugins/js_composer/assets/js/backend/composer-view.js
row_idx = np.searchsorted(lookup_array[:,0],key_set)[key_set.argsort()]
values = lookup_array[row_idx,1]
中的
或在wp-content / plugins / js_composer / assets / js / dist / backend.min.js`
希望这适合你!
答案 1 :(得分:21)
@Sorin Haidau
大家好,我正在使用Astra主题。此修复程序的工作率为99.9%。对于某些人来说,这只会停止旋转轮,但一旦页面加载,视觉作曲家就不会。
我对这段代码做了一些改动(到现在为止已经发布了)
这里的原创Astra主题代码(composer-view.js)
html2element:function (html) {
var attributes = {},
$template;
if (_.isString(html)) {
this.template = _.template(html);
$template = $(this.template(this.model.toJSON()).trim());
} else {
this.template = html;
$template = html;
}
_.each($template.get(0).attributes, function (attr) {
attributes[attr.name] = attr.value;
});
this.$el.attr(attributes).html($template.html());
this.setContent();
this.renderContent();
},
有效的代码:
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()
},
主要区别在于此处(与原始代码相比)
}); this.$el.attr
有一个分号而不是原始的逗号:):
}), this.$el.attr
欢呼人们:)
更新:这修复了我使用主题astra的20个网站中的19个,其中包含与上述相同的错误...除了一个网站以外的所有网站。
我在视觉作曲家终于出现之后出现了这个错误(缺少一半的设计元素)
Uncaught Error: Syntax error, unrecognized expression: .ui-tabs-nav [href=#tab-1415196282-1-8]
我通过更新composer-custom-views.js的第552行来解决这个问题:
$('.ui-tabs-nav [href="#tab-' + params.tab_id + '"]').text(params.title);
并且现在一切正常。对不起,如果它不适用于所有主题,请尝试使用上面其他人提到的代码。如果这不起作用,请尝试我的解决方案:)
答案 2 :(得分:16)
有人在WordPress论坛上发布了这个对我有用的解决方案。
使用以下内容替换html2element
中的/wp-content/plugins/js_composer/assets/js/backend/composer-view.js
功能。
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()
},
编辑:我不得不在不同情况下第二次进行此替换,直到我禁用然后重新启用Visual Composer插件和 Ultimate Visual Composer之后它才开始工作插件。
答案 3 :(得分:2)
注意到代码没有被传递到html2element函数,但是在调用它的函数中确实存在(渲染)
以下代码已完全纠正了我的问题,我可以加载页面,添加,克隆,删除等
render: function () {
var $shortcode_template_el = $( '#vc_shortcode-template-' + this.model.get( 'shortcode' ) );
if ( $shortcode_template_el.is( 'script' ) ) {
var newHtmlCode = _.template( $shortcode_template_el.html(),
this.model.toJSON(),
vc.templateOptions.default );
if(!_.isString(newHtmlCode)){
newHtmlCode = $shortcode_template_el.html();
}
this.html2element( newHtmlCode );
} 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;
},

答案 4 :(得分:2)
有趣的是......我的视觉作曲家版本号远远高于最新版本(4.8。*)。
无论如何......我遇到了同样的问题,之前的答案并没有完全解决我的问题,所以我决定尝试购买该插件的新副本。结果很好。
我现在可以确认Visual Composer 4.12.1版本与WordPress 4.6.1一起使用没有错误。
另请注意:
在最新版本的Visual Composer中没有backend
这样的目录或名为composer-view.js
的文件。
PS。使用这些GUI页面构建器很糟糕***。
答案 5 :(得分:0)
2016年12月的最新修补程序,对于Visual composer fix来说就是这个,
html2element:function(html){var $template,attributes={},template=vc.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()},
注意这个重要的事情,实际代码中的 template = vc.template(html); 。这是最新版本的快速修复,与WPordpress最新版本兼容。
请记住相应地更新Wordpress和主题,因此此修复程序应该可以正常工作。
感谢和快乐的编码
答案 6 :(得分:0)
这适用于WordPress 4.9.8版本
html2element:function (html) {
var attributes = {},
$template;
if (_.isString(html)) {
this.template = _.template(html);
} else {
try {
this.template = _.template(html());
} catch (err) {
this.template = html;
}
}
$template = $(this.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();
},
答案 7 :(得分:-2)
对于任何人来自谷歌搜索: 更改html2element函数后,如果您有此错误 无法读取属性'属性' 更新渲染:函数到下面的代码
render: function () {
var $shortcode_template_el = $( '#vc_shortcode-template-' + this.model.get( 'shortcode' ) );
if ( $shortcode_template_el.is( 'script' ) ) {
var newHtmlCode = _.template( $shortcode_template_el.html(),
this.model.toJSON(),
vc.templateOptions.default );
if(!_.isString(newHtmlCode)){
newHtmlCode = $shortcode_template_el.html();
}
this.html2element( newHtmlCode );
} 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;
},