由于某些原因,绑定不会对指令中ng-if
块内的输入起作用
所以这个,不起作用:
app.directive 'foo', ->
restrict: 'E'
scope:
type:'='
template: "<input ng-if=\"type === 'string'\" ng-model='filterText'>
<div> {{filterText}} </div>"
<foo type="'string'" />
它在指令之外或没有ng-if
之外正常工作。在ng-if
无效的div中包含输入。这是一个错误吗?
答案 0 :(得分:5)
这是由于ng-if引入了一个新的范围,结合了你的模型“没有点在其中”这一事实。
这有效:
template: "<div ng-init='holder={}'> <input ng-if=\"type === 'string'\" ng-model='holder.filterText'></div>
<div> {{holder.filterText}}</div>"
请参阅https://docs.angularjs.org/api/ng/directive/ngIf处的指令信息,并注意文本“此指令创建新范围”。 对于“dot-in-model”,请参阅示例 Does my ng-model really need to have a dot to avoid child $scope problems? 要么 https://egghead.io/lessons/angularjs-the-dot 基本上,在读取值时,将正确读取范围原型,但在修改值时,它将被写入自己的范围。
答案 1 :(得分:1)
答案 2 :(得分:-3)
示例中未关闭<div>
标记,ng-if
也未应用于该节点。
试试这个:
template: "<input ng-model='filterText'>
<div ng-if=\"type === 'string'\"> {{filterText}}"</div>"