2017-01-14 5 views
0

Это часть моего VDOMмодифицировать HTML после нагрузок компонентов mithrill

m('.w-row', _.map(ctrl.posts(), (post) => { 
         return m('.w-col.w-col-4.col-blog-post', 
          [ 
           m(`a.link-hidden.fontweight-semibold.fontsize-base.u-marginbottom-10[href="${post[2][1]}"][target=\'__blank\']`, post[0][1]), 
           m('.fontsize-smaller.fontcolor-secondary.u-margintop-10', m.trust(`${post[1][1]}`)) 
          ] 
         ); 
        })), 

В части m.trust('${post[1][1]}') я получаю часть HTML. Что я хочу сделать с этим html, добавьте target _blank для каждой ссылки в этом html. Я попытался добавить config внутри trust, но эта функция не выполняется. Любая идея, как я могу это сделать.

Вот мои JS для добавления целевой _blank в HTML

var div = document.getElementsByClassName('medium-feed-item'); 
div[0].getElementsByTagName('a'); 
div[0].getElementsByTagName('a')[0].setAttribute('target', '_blank'); 
+1

Я думаю, что 'config' функция должен ли он предоставить как опцию 'm ('. fontsize-less.fontcolor-secondary.u-margintop-10')' – Vier

ответ

2

Вы должны поместить config вызов в узле над m.trust:

m('.w-row', _.map(ctrl.posts(), post => 
    m('.w-col.w-col-4.col-blog-post', 
    m(`a.link-hidden.fontweight-semibold.fontsize-base.u-marginbottom-10[href="${post[2][1]}"][target=\'__blank\']`, post[0][1]), 
     m('.fontsize-smaller.fontcolor-secondary.u-margintop-10', { 
     config(el){ 
      _.map(el.querySelectorAll('a:not([target=__blank])'), el => 
      el.setAttribute('target', '__blank') 
     ) 
     } 
     }, 
     m.trust(`${post[1][1]}`) 
    ) 
    ) 
) 
) 
+2

'a: not ([href = __ blank])' выглядит очень неправильно. Есть (был) в ожидании редактирования @Raaz, пытаясь его исправить, но я не думаю, что исправление было правильным (и не должно быть сделано как изменение в любом случае - должно быть комментарий). Скорее всего, должно быть что-то вроде 'target = ...', то же самое для 'setAttribute'. –

+0

@Alexei хорошо пятнистый! Спасибо, что указали это. – Barney