有角度的条件多选指令

时间:2015-09-14 20:24:17

标签: javascript angularjs multi-select

我正在创建一个选择框指令,作为其中的一部分,我需要指定select是否为多个。

我试图在我的一个范围对象中设置一个多重属性值为"多个"假设它将在我的选择框上执行并设置multiple="multiple",如下所示:

<select multiple="{{properties.multiple}}" /*...(other working properties)...*/ ></select>

但这让我错了..

Error: [$compile:selmulti] http://errors.angularjs.org/1.4.4/$compile/selmulti?p0=%3Cselect%20id%3D%22…y%20as%20value%20for%20(key%20%2C%20value)%20in%20properties.options%22%3E
    at Error (native)
    at path/to/angular/angular-1.4.4/angular.min.js:6:416
    at X (path/to/angular/angular-1.4.4/angular.min.js:71:93)
    at ha (path/to/angular/angular-1.4.4/angular.min.js:56:379)
    at S (path/to/angular/angular-1.4.4/angular.min.js:54:425)
    at path/to/angular/angular-1.4.4/angular.min.js:68:209
    at path/to/angular/angular-1.4.4/angular.min.js:118:217
    at n.a.$get.n.$eval (path/to/angular/angular-1.4.4/angular.min.js:133:39)
    at n.a.$get.n.$digest (path/to/angular/angular-1.4.4/angular.min.js:130:60)
    at n.scopePrototype.$digest (chrome-extension://ighdmehidhipcmcojjgiloacoafjmpfk/dist/hint.js:1955:23)

我可以使用ng-if但我正在尝试找到一种更好的方法,而不是使用冗余的选择标记来区分标准和多种标记。

什么是更好的方法?

2 个答案:

答案 0 :(得分:0)

使用ng-if创建自己的指令,或者使用逻辑编写指令以在单个和多个之间切换。看起来像有角度不想这样做,但如果它适合你,那就去吧。

答案 1 :(得分:0)

一种可能性是在指令定义中添加一个链接函数,该函数检查范围的properties.multiple值,然后使用jquery或jqLit​​e设置属性。所以:

angular.directive("yourDirective", function() {    return {
      link: function(scope, element, attrs) {
           if (scope.properties.multiple) {
              elements.children("select").attr("multiple",true);
           }
      },
      templateUrl: "yourtemplate.html", ...    
      } 
});