【问题标题】:Angular change css of different directive不同指令的角度变化css
【发布时间】:2017-03-17 23:30:03
【问题描述】:

我有一个真正的问题是用 Angular 和 css 更改一些简单的 css。

我有代码:

<div class="progress">
    <div class="progress-bar progress-bar-info" ng-class="stepOne">1</div>
    <div class="progress-bar progress-bar-info" ng-class="stepTwo">2</div>
    <div class="progress-bar progress-bar-info" ng-class="stepTree">3</div>
</div>

<div class="well col-lg-12">
    <applystepone ng-if="step.one"></applystepone>  <!-- this is my directive -->
    <applysteptwo ng-if="step.two"></applysteptwo>
    <applysteptree ng-if="step.tree"></applysteptree> 

</div>

在指令中:applystepone 我有一个按钮。如果我单击按钮,我希望 ng-class="stepOne" 更改进度条的 css

指令中的按钮:

<div class="col-lg-12 text-center">
    <a class="btn btn-primary" ng-click="steptwo(); stepOne='valide-step'">Next step</a> 
</div>

还有指令:

app.directive('applystepone', function() {

    return {
        restrict: 'E',
        templateUrl: 'partials/apply-step-one.html'
    };
});

如果我点击按钮,没有任何附加到

ng-class="stepOne"

如果我放在apply-step-one.html

<p ng-class="stepOne">Test </p>

css 工作正常,所以按钮工作正常。我想这是因为我的 ng-click 在指令中,而不是 ng-class="stepOne"

【问题讨论】:

  • 写到一半,我意识到我不知道到底是什么问题(但仍然为您提供了两个问题的解决方案)。你能准确地说出你想要达到什么目标以及有什么问题吗?

标签: html css angularjs angularjs-directive


【解决方案1】:

不是 100% 确定我理解了整个事情,但它就是这样。

我认为您应该考虑修改您的 CSS(顺便说一句,您还没有显示)和代码:

<div class="progress">
    <div class="progress-bar progress-bar-info" ng-class="{active: step.one}">1</div>
    <div class="progress-bar progress-bar-info" ng-class="{active: step.two}">2</div>
    <div class="progress-bar progress-bar-info" ng-class="{active: step.three}">3</div>
</div>

这将根据范围内的步骤触发进度条上的active 类。

然后,而不是

<p ng-class="stepOne">Test </p>

您可能应该使用更通用的东西,例如:

<p class="button">Test </p>

并修改CSS来触发它,例如:

.well p.button {
    color: green;
} 

而如果你只是想修改按钮的类,那很简单:

<p ng-class="{'stepOne': step.one, 'stepTwo': step.two, 'stepThree': step.three}">Test </p>

进度条 div 和我上面描述的类似。

【讨论】:

  • ng-class="{active: step.one}" 的解决方案非常好。我认为更合适的是,我的按钮在没有stepOne='valide-step' 的情况下保持清洁。如果我们通过第二步,我还有 ng-hide="step.two"&lt;applystepone&gt;&lt;/applystepone&gt; 隐藏元素...
  • 是的,你应该让 CSS 处理样式,而 Angular 只是为了在元素之间切换。
【解决方案2】:

试试:

<a class="btn btn-primary" ng-click="steptwo(); $parent.stepOne='valide-step'">Next step</a>

$parent 将从您的指令中检索父范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-30
    • 2020-03-24
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 2016-06-07
    相关资源
    最近更新 更多