【问题标题】:Dynamic Attributes with AngularJSAngularJS 的动态属性
【发布时间】:2014-08-30 07:01:36
【问题描述】:

在某些情况下,我需要根据模型中的属性对节点应用不同的属性。

例如,在一种情况下我需要添加“必需”标签,而在另一种情况下不需要。我一直在使用具有不同分支的 ng-if 来完成此任务,但情况很快就会失控。

 <div ng-if="model.required">
    <input class="form-control"
           type="text"
           required 
           ng-model="model" />
 </div>
 <div ng-if="!model.required">

    // as different options arise,
    // i have more forks for each attribute combo

    <input class="form-control"
           type="text"
           ng-model="model" />
 </div>

有没有更好的方法将属性动态应用到节点?

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    我快速创建了一个指令,允许您动态指定属性。

    http://jsfiddle.net/HB7LU/1806/

    我不确定它是否会以这种简单的形式产生您想要的效果,但这可能是一个很好的起点。你基本上使用:

    &lt;div dyn-attrs="someModelArray"&gt;&lt;/div&gt;

    并相应地设置您的模型:

    $scope.someModelArray = [
        { attr: 'myattribute', value: '' },
        { attr: 'anotherattribute', value: 'val' }
    ];
    

    【讨论】:

    • 也许将其与 ng-css 的相同方法合并可以完成我的案例。谢谢!
    • 不幸的是,这种方法中使用的属性不能是指令。好吧,他们可以,但他们不会被 Angular 编译。
    • 注意:这里写着:dyn-attrs,在 Fiddle 中,dyn-attr
    【解决方案2】:

    在这种情况下,最好使用 ngRequired:

    <input class="form-control" type="text" ng-required="model.required" />
    

    【讨论】:

      猜你喜欢
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 2017-06-16
      相关资源
      最近更新 更多