inline-if inside 按钮触发弃用警告和错误
Inline-if inside button triggers deprecation warning and error
我正在尝试在计算 属性 上绑定按钮是 active
还是 disabled
,但之后收到此折旧警告和错误。
这是麻烦的按钮(Ember 1.11.1 这里):
<button {{ action 'loadMore' }} {{if canLoadMore 'active' 'disabled'}}>Load More Posts...</button>
此警告和错误:
DEPRECATION: Returning a string of attributes from a helper inside an element is deprecated.
Uncaught TypeError: Cannot read property 'replace' of undefined
关于这个函数:
if (value) {
Ember['default'].deprecate('Returning a string of attributes from a helper inside an element is deprecated.');
var parts = value.toString().split(/\s+/);
for (var i = 0, l = parts.length; i < l; i++) {
var attrParts = parts[i].split('=');
var attrName = attrParts[0];
var attrValue = attrParts[1];
attrValue = attrValue.replace(/^['"]/, '').replace(/['"]$/, '');
env.dom.setAttribute(domElement, attrName, attrValue);
}
试试这个:
<button {{ action 'loadMore' }}
class="{{if canLoadMore 'active' 'disabled'}}">Load More Posts...</button>
无论如何,不应发生 TypeError(因为您的字符串不包含 <button {{ action 'loadMore' }} class={{if canLoadMore 'class="active"' 'class="disabled"'}}>Load More Posts...</button>
中的“=”而触发(阅读:更有意义的错误消息将非常有帮助)。
但这是一个已弃用的功能,无论如何都会消失。
我假设您想在基于 canLoadMore
属性 的按钮元素上设置活动 class。在这种情况下,请继续阅读。
您的按钮代码计算结果如下 html:
<button data-ember-action="1234" 'active'>
当您可能需要这个时:
<button data-ember-action="1234" class='active'>
所以更改您的代码:
<button {{ action 'loadMore' }} {{if canLoadMore 'active' 'disabled'}}>Load More Posts...</button>
至:
<button {{ action 'loadMore' }} class="{{if canLoadMore 'active' 'disabled'}}">Load More Posts...</button>
您可以使用 {{bind-attr}}
助手:
{{bind-attr class=property:classIfTrue:classIfFalse :classThatDoesntCare}}
所以你的例子可能是这样的:
<button {{action "loadMore"}} {{bind-attr class="model.canLoadMore:active:disabled :btn :btn-default"}}>Load More Posts...</button>
我正在尝试在计算 属性 上绑定按钮是 active
还是 disabled
,但之后收到此折旧警告和错误。
这是麻烦的按钮(Ember 1.11.1 这里):
<button {{ action 'loadMore' }} {{if canLoadMore 'active' 'disabled'}}>Load More Posts...</button>
此警告和错误:
DEPRECATION: Returning a string of attributes from a helper inside an element is deprecated.
Uncaught TypeError: Cannot read property 'replace' of undefined
关于这个函数:
if (value) {
Ember['default'].deprecate('Returning a string of attributes from a helper inside an element is deprecated.');
var parts = value.toString().split(/\s+/);
for (var i = 0, l = parts.length; i < l; i++) {
var attrParts = parts[i].split('=');
var attrName = attrParts[0];
var attrValue = attrParts[1];
attrValue = attrValue.replace(/^['"]/, '').replace(/['"]$/, '');
env.dom.setAttribute(domElement, attrName, attrValue);
}
试试这个:
<button {{ action 'loadMore' }}
class="{{if canLoadMore 'active' 'disabled'}}">Load More Posts...</button>
无论如何,不应发生 TypeError(因为您的字符串不包含 <button {{ action 'loadMore' }} class={{if canLoadMore 'class="active"' 'class="disabled"'}}>Load More Posts...</button>
中的“=”而触发(阅读:更有意义的错误消息将非常有帮助)。
但这是一个已弃用的功能,无论如何都会消失。
我假设您想在基于 canLoadMore
属性 的按钮元素上设置活动 class。在这种情况下,请继续阅读。
您的按钮代码计算结果如下 html:
<button data-ember-action="1234" 'active'>
当您可能需要这个时:
<button data-ember-action="1234" class='active'>
所以更改您的代码:
<button {{ action 'loadMore' }} {{if canLoadMore 'active' 'disabled'}}>Load More Posts...</button>
至:
<button {{ action 'loadMore' }} class="{{if canLoadMore 'active' 'disabled'}}">Load More Posts...</button>
您可以使用 {{bind-attr}}
助手:
{{bind-attr class=property:classIfTrue:classIfFalse :classThatDoesntCare}}
所以你的例子可能是这样的:
<button {{action "loadMore"}} {{bind-attr class="model.canLoadMore:active:disabled :btn :btn-default"}}>Load More Posts...</button>