0

У меня есть угловая директива:AngularJS Изменить Scope в директиве Шаблоне

app.directive('myStyle', function($location) { 
    return { 
    scope: { 
     myCSSFile: "=" 
    }, 
    //template: '<link href="style.css" rel="stylesheet" />', 
    template: '<link href="{{ myCSSFile }}.css" rel="stylesheet" />', 
    link: function(scope,el, attr) { 
     var absUrl = $location.absUrl(); 
     console.log(absUrl); 

     if (absUrl == 'http://run.plnkr.co/KDRUOzkRgvgCzdzy/') { 
     console.log("Found"); 
     scope.myCSSFile = 'style'; 
     } 
     else { 
     console.log("Not found"); 
     scope.myCSSFile = 'style2'; 
     }  
    } 
    }; 
}); 

Как я связать значение {{ myCSSFile }} внутри шаблона на основе функции в моей link?

Plunkr: http://plnkr.co/edit/I6om40ZfRZbETwsbl3MO?p=preview

+1

http://stackoverflow.com/q/15485288/3556874 –

+0

@NaeemShaikh - спасибо за ссылку, я получаю, что мне нужно установить область в true и использовать $ complie ... но как мне вернуть jqLiteWrappedElement в шаблон? Кроме того, есть часы на плагине, я не вижу, что мне действительно нужно смотреть что-нибудь для этого, так как он будет срабатывать только при загрузке страницы. –

+0

@NaeemShaikh - см. Эту вилку: http://plnkr.co/edit/Pp2PkRcHb07EqNweJJfR?p=preview –

ответ

1

Вы не можете использовать два способа связывания для myCSSFile с неопределенным значением. Так что если вы хотите изолированную сферу вы можете изменить его, чтобы связать с @ или создать новую область:

scope: true, // plunker1 
scope: { // plunker2 
    myCSSFile = '@' 
}, 

Punker1, Plunker2

+0

спасибо, ваш плункер, похоже, не обновляется. –

+0

Что не обновлено? – eladcon

+0

ваша ссылка на плункер .. Его по-прежнему отображается как область действия: true ... no comment about scope: { myCSSFile = '@' }, –

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