2014-07-03 64 views
1

如何創建一個指令讓我訪問內聯樣式標記中的$ scope對象?Angular inline CSS

我需要的是像這樣:

<style> 
    p { 
     font-size: {{userSetting.fontSize}} 
     margin: {{userSetting.margin}} 
    } 
</style> 

我已經開始爲它的指令工作,但無法弄清楚如何創建它。

+0

好像你正在尋找在錯誤的方向,你可以操縱的DOM而不是CSS類,你應該薄添加和移除類元素的條款在DOM –

+0

內聯樣式是自定義的,並且由用戶決定,因此它可以是邊距:10px或邊距:55px - 這取決於用戶。這就是爲什麼我需要讓他們內聯而不是上課。 – n83

回答

0

所以...雖然我不認爲這是一個好主意。你可以用一個指令完成它:

<ng-style-definition> 
    h1 { 
    color: {{h1.color}}; 
    } 
</ng-style-definition>``` 

app.directive('ngStyleDefinition', function($timeout){ 
    return { 
    restrict: 'E', 
    replace: true, 
    transclude: true, 
    template: '<style ng-transclude></style>', 
    link: function(scope, element, attr){ 
     $timeout(function(){ 
     element.html(element.children().text()) 
     }, 0) 
    } 
    } 
}) 

你可以得到一個小吸塵器將在$解析或$插值服務,但多數民衆贊成它的要點。

幾個例子可以看這裏:http://plnkr.co/edit/eqmFho55YckE5wmYHdJB?p=preview

+0

謝謝 - 我會將其標記爲正確的答案,因爲它會將我引向正確的道路。爲什麼它不是一個好主意?其背後的邏輯是用戶可以設計自己的頁面,並且使用內聯樣式來實現它。我認爲這會比在元素本身上創建樣式要快,例如ngStyle – n83

+0

我想這確實取決於應用程序的上下文。 –