2017-07-28 1 views
1

ng-hrefを使用して異なるCSSスタイルをページに動的に読み込もうとしていますが、ページがアクティブなスタイルで更新されていません。次のようにコードがある:CSSファイルがng-href経由で動的に読み込まれていません

<html ng-app="myapp" ng-controller="myController as myctrl"> 
    <head> 
     <link rel="stylesheet" ng-href="../assets/css/{{ myctrl.style }}.css"> 
    </head> 
</html> 

私のコントローラでは、私は次の操作を行います

vm.style = "redStyle"; 
pub.subscribe('style', function(theStyle) { 
    vm.style = theStyle; 
}); 

subscribe内の変数は、一度公開が行われた新しいスタイルで更新されます。しかし、スタイルがページ上で更新されるように、それぞれのCSSファイルがロードされていません。私が逃しているアイデアは何ですか?

+0

あなたは// – Vivz

+0

2は、あなたがDEVで確認することができています。コンソールは "404 - ファイルが見つかりません"を返すかどうか? – Jordumus

+0

申し訳ありませんが、追加の "/"はタイプミスです。 – YourReflection

答えて

0

Here is a working demo

それは非常にあなたがそう、それはあなたのコード内の他の何か持っているものと同じです。すべてのコードを記述しない限り、分かりにくいです。

スタイルシートが実際に存在しないと仮定すると、スタイル変数が更新取得され、その後、私の推測では、このコールバックは文句を言わない更新参照角度その後、角度の外で何かによってトリガされている場合は犯人が

pub.subscribe() 

であるということです変数。あなたはそのような角度のスペースにそれを戻すことができます。

pub.subscribe('style', function (theStyle) { 
    $scope.$apply(function(){ 
     vm.style= theStyle; 
    });    
}); 
0

はこれを試してみてください:

<link rel="stylesheet" data-ng-if="myctrl.style" data-ng-href="../assets/css/{{ myctrl.style }}.css" /> 
0

私は違っそれを解決しました。

<link id="theme" rel="stylesheet" ng-href="../assets/css/{{theme}}.css"> 

そして、私が言うのコントローラに:私のhtmlで は、私は、link要素にIDを与えた

var myTheme = document.getElementById("theme"); 
var path = "../assets/css/{{theme}}.css"; 
myTheme.href = path.replace("{theme}", theme.class); 
関連する問題