如何给directive添加一个默认属性

Doyle
  • 844

我自己有个指令叫做keyboard,就是键盘了,键盘上面按键分两种:数字和非数字。我想通过下面的代码,让keyboard只显示数字部分,把非数字都隐藏了。

// index.html
<keyboard onlynumber="true"></keyboard>

// directive.js
// 下面我用了@不行,用=也不行,请懂的人顺便解释下
function keyboardNumber() {
var directive = {
    restrict: 'EA',
    scope: {
      onlynumber: '='
    },
    templateUrl: 'keyboard.html',
    replace: true
  };

  return directive;
}

// keyboard.html
<div class="keyboard">
...
  <div data-ng-hide="onlynumber"></div>
...
</div>

却没能隐藏,上网搜,我也不知道搜什么关键词(真是要命),结果搜到stack overflow有个哥们情况跟我类似,虽然问题没解决,但是有个回答给了我些启发:如果你的值是不变的,那你可以只写属性

<keyboard onlynumber></keyboard>

这样写看起来更简洁好看,然而我还是不知道怎么做,聪明的你,能告诉我怎么做吗,多谢

回复
阅读 2.6k
3 个回答

答案提交后,发现我第一种写法是可以将true传到指令模板的,但是

<keyboard onlynumber></keyboard>

这种有人知道怎么实现吗

凉风小幸
  • 126
<keyboard onlynumber></keyboard>

这种在解析的时候会被认为是这种形式:

<keyboard onlynumber=""></keyboard>

如果你只是希望给指令配置一个默认值的话,在指令内部取onlynumber这个参数的时候设定就可以了,没必要在前面搞。

scope.onlynumber = scope.onlynumber == null ? true : scope.onlynumber;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏