当我从控制器更改时,Angular ng-style 不会自动应用更改

Posted

技术标签:

【中文标题】当我从控制器更改时,Angular ng-style 不会自动应用更改【英文标题】:Angular ng-style does not automatically apply changes when I change it from controller 【发布时间】:2016-03-01 12:54:01 【问题描述】:

我有一些使用 ng-style 的内容,这里是模板 html 的一部分:

<div ui-tree-handle data-nodrag 
     class="tree-node tree-node-content" 
     ng-click="toggle(this)" 
     ng-style=breddeCSS>

breddeCSS 在这里的控制器中定义:

      function setBreddeCSS(b) 

          switch (b) 

              case 0:
                  $scope.breddeCSS = 
                      "margin": "-1px",
                  ;
                  break;

              case 1:
                  $scope.breddeCSS = 
                      "margin": "5px",
                  ;
                  break;

              default:
                  $scope.breddeCSS = 
                      "margin": "10px",
                  ;
          

      

模板获取页边距样式,但仅在网站首次加载时。如果我更改了 $scope.bredde,只有在刷新页面时我才能看到更改!

我希望每次更新 $scope.bredde 时页面都会动态更改。我该怎么做?

【问题讨论】:

@ArpitSrivastava breddeCSS 是一个对象,而不是一个函数。 【参考方案1】:

ngStyle 需要一个表达式本身,而不是它的求值结果。 Docs.

<div ui-tree-handle data-nodrag 
     class="tree-node tree-node-content" 
     ng-click="toggle(this)" 
     ng-style="breddeCSS">

http://plnkr.co/edit/RxTte5njdS8GfTiD73LA?p=preview

【讨论】:

以上是关于当我从控制器更改时,Angular ng-style 不会自动应用更改的主要内容,如果未能解决你的问题,请参考以下文章

Ionic 4:当我从 IOS 中的控制器更改“img”标签的“src”内容时,它没有更新

当搜索过滤器值从javascript更改时,智能表不会更新[重复]

当我更改页面时,ionViewDidLeave 和 ionViewDidEnter 没有触发

Angular:防止资产文件夹发生更改时自动重新编译

为啥只有当我从 iframe 调用 postMessage() 方法时我的 Angular 属性才会更新

存储库不干净。请在 Angular 8 中更新之前提交或存储任何更改