由于某种原因,绑定不适ng-if用于指令中块内的输入
所以这个,不起作用:
app.directive 'foo', ->
restrict: 'E'
scope:
type:'='
template: "<input ng-if=\"type === 'string'\" ng-model='filterText'>
<div> {{filterText}} </div>"
<foo type="'string'" />
Run Code Online (Sandbox Code Playgroud)
它在指令之外或没有指令时工作正常ng-if.在ng-if没有帮助的情况下包装div内部的输入.这是一个错误吗?
它是由ng-if引入一个新的范围和你的模型"没有点在其中"这一事实引起的.
这有效:
template: "<div ng-init='holder={}'> <input ng-if=\"type === 'string'\" ng-model='holder.filterText'></div>
<div> {{holder.filterText}}</div>"
Run Code Online (Sandbox Code Playgroud)
请参阅https://docs.angularjs.org/api/ng/directive/ngIf上的指令信息,并注意文本"此指令创建新范围".对于"dot-in-model",请参阅例如 我的ng-model是否真的需要一个点来避免子$ scope问题? 或 https://egghead.io/lessons/angularjs-the-dot 基本上,当读取值时,它将正确读取遍历范围原型,但在修改值时,它将被写入自己的范围.