CSS文件未通过ng-href动态加载

时间:2017-07-28 11:43:55

标签: javascript html css angularjs

我正在尝试使用ng-href动态地将不同的CSS样式加载到我的页面中,但页面未使用激活的样式进行更新。代码如下:

<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文件,以便在页面上更新样式。我错过了什么想法?

3 个答案:

答案 0 :(得分:0)

Here is a working demo

它与您拥有的内容非常相似,因此您的代码中还有其他内容。除非你提出所有代码,否则很难分辨。

假设样式表确实存在,并且样式变量正在更新,那么我的猜测是罪魁祸首

pub.subscribe()

如果此回调是由角度以外的东西触发的,则角度不会看到更新的变量。您可以将其带回角度空间,如下所示:

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

答案 1 :(得分:0)

试试这个:

...
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar 

...

class MyApp(QtGui.QMainWindow, Ui_MainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)
        self.setupUi(self)
        self.addToolBar(NavigationToolbar(self.canvas, self))
        ...

答案 2 :(得分:0)

我解决了不同的问题。 在我的html中,我给链接元素一个id:

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

在控制器中我说:

var myTheme = document.getElementById("theme");
var path = "../assets/css/{{theme}}.css";
myTheme.href = path.replace("{theme}", theme.class);