如果通过触发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>
答案 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'
答案 1 :(得分:0)
您的代码无法正常工作,因为当您点击跨度时,跨度将隐藏,输入将显示但不会获得焦点。出于这个原因,当你点击&#34;外面&#34;输入ngBlur永远不会触发(输入永远不会获得焦点)。检查此单击跨度并再次单击输入。输入已获得焦点,当您点击外部时,会触发ngBlur。
使用跨度指令。单击span时,此指令专注于输入。不再修改代码,但需要一些知识指令。
使用两个布尔变量显示输入。如果鼠标超过跨度/输入,则一例如此。单击时另一个为真,触发ngBlur时为false。当然,你需要像<input ng-show="mouseOver || showInput">
那样思考。