ng-blur未在内联编辑中设置true / false值

时间:2017-10-07 14:49:03

标签: javascript angularjs angularjs-ng-repeat blur

如果通过触发ng-blur在输入文本框外单击,我试图将视图设置为内联编辑中的只读视图(修改前的值)。但是没有按预期工作。

尝试了我的代码here

<ul ng-init="showInput=false">
    <li ng-repeat="todo in todos">
      <span ng-show="!showInput" ng-click="showInput=!showInput">{{todo.title}}</span>
      <span><input ng-show="showInput"  ng-model="todo.title" ng-blur="showInput=true"></span>
    </li>
    </ul>

2 个答案:

答案 0 :(得分:1)

我已经尝试了一个根据我的问题假设检查出来的一个plunker,如果错了请讨好您的问题

添加了模糊功能

>>> interpret(["door_open", "AND", "cat_gone"], 
               {"door_open" : "false", "cat_gone" : "true", "cat_asleep" : "true"} )
'false'        
>>> interpret(["cat_asleep", "OR", ["NOT", "cat_gone"]],
               {"door_open" : "false", "cat_gone" : "true", "cat_asleep" : "true"})
'true'
>>> interpret(["true", "OR", "true"], {})
'true'
>>> interpret("cat_gone", {"door_open": "false", "cat_gone": "true"})
'true'
>>> interpret(["NOT", ["NOT", ["NOT", ["cat_asleep", "OR", ["NOT", "cat_asleep"]]]]],
               {"cat_asleep": "false"})
'false'
>>> interpret(["NOT", "AND", "true"], {"NOT":"true"})
'true'
>>> interpret(["NOT", "AND"], {"AND": "false"})
'true'

plunkr

答案 1 :(得分:0)

问题

您的代码无法正常工作,因为当您点击跨度时,跨度将隐藏,输入将显示但不会获得焦点。出于这个原因,当你点击&#34;外面&#34;输入ngBlur永远不会触发(输入永远不会获得焦点)。检查此单击跨度并再次单击输入。输入已获得焦点,当您点击外部时,会触发ngBlur。

解决方案1(最好的)

使用跨度指令。单击span时,此指令专注于输入。不再修改代码,但需要一些知识指令。

解决方案2(很差,但你不需要指令)

使用两个布尔变量显示输入。如果鼠标超过跨度/输入,则一例如此。单击时另一个为真,触发ngBlur时为false。当然,你需要像<input ng-show="mouseOver || showInput">那样思考。