绑定在ng-if内停止输入

iLe*_*ing 6 angularjs

由于某种原因,绑定不适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内部的输入.这是一个错误吗?

jsbin链接

Ste*_*ich 5

它是由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 基本上,当读取值时,它将正确读取遍历范围原型,但在修改值时,它将被写入自己的范围.