Javascript 鼠标左键不能正常工作
我有一个场景,当我用鼠标输入一些文本时,我需要得到一个输入框,文本应该隐藏,当我离开文本框时,文本框应该隐藏,我应该显示回文本 但这并没有发生 Html 这是我试过的Javascript 鼠标左键不能正常工作,javascript,angularjs,Javascript,Angularjs,我有一个场景,当我用鼠标输入一些文本时,我需要得到一个输入框,文本应该隐藏,当我离开文本框时,文本框应该隐藏,我应该显示回文本 但这并没有发生 Html 这是我试过的 非常感谢您的帮助。问题是您在ng if指令上有原语值,您知道ng if在DOM上呈现该元素时会创建子范围。要解决这个问题,我建议您只需按照点规则定义新对象即可。然后定义要在该对象内使用的所有属性 如果您想更深入地了解范围继承是如何工作的,可以参考 因此,在您的代码中,您应该定义一个对象,即$scope.model={},然后在该对
非常感谢您的帮助。问题是您在
ng if
指令上有原语值,您知道ng if
在DOM上呈现该元素时会创建子范围。要解决这个问题,我建议您只需按照点规则
定义新对象即可。然后定义要在该对象内使用的所有属性
如果您想更深入地了解范围继承是如何工作的,可以参考
因此,在您的代码中,您应该定义一个对象,即$scope.model={}
,然后在该对象本身内部具有showme
属性。无论您在视图中使用showme
,都可以将其替换为model.showme
解决此类范围继承问题更方便的方法是,可以使用
controllerAs
模式。由于您不在控制器内部使用$scope
,所以您只需使用控制器上下文放置此
。在视图上使用控制器时,您需要创建它的别名,并且当您想要获取变量值时,可以使用变量引用。问题是您在ng if
指令上有原语值,您知道ng if
在DOM上呈现该元素时会创建子范围。要解决这个问题,我建议您只需按照点规则
定义新对象即可。然后定义要在该对象内使用的所有属性
如果您想更深入地了解范围继承是如何工作的,可以参考
因此,在您的代码中,您应该定义一个对象,即$scope.model={}
,然后在该对象本身内部具有showme
属性。无论您在视图中使用showme
,都可以将其替换为model.showme
解决此类范围继承问题更方便的方法是,可以使用
controllerAs
模式。由于您不在控制器内部使用$scope
,所以您只需使用控制器上下文放置此
。在视图上使用控制器时,您需要创建它的别名,并且当您想要获取变量值时,可以使用变量引用。问题在于您有多个嵌套作用域。在输入框中设置的showme
与在p
中设置的showme
不同。这是因为Angular隐式地为许多内置指令(ng if是其中之一)添加了一个新范围
您需要确保始终设置和读取相同的showme
属性。最简单的方法是将showme
属性添加到控制器
试试这个:
<div ng-app>
<div ng-controller="showCrtl">
<div ng-hide="showCrtl.showme">
<p ng-mouseenter="showCrtl.showme=!showCrtl.showme">
mouse enter
</p>
</div>
<input type="search" ng-if="showCrtl.showme" ng-mouseleave="showCrtl.showme=false">
</div>
</div>
鼠标进入
事实上,根据一般经验,永远不要直接在模板中访问范围,因为很难确保您正在访问您认为正在访问的范围。始终通过正在使用的控制器访问属性。问题在于您有多个嵌套作用域。在输入框中设置的
showme
与在p
中设置的showme
不同。这是因为Angular隐式地为许多内置指令(ng if是其中之一)添加了一个新范围
您需要确保始终设置和读取相同的showme
属性。最简单的方法是将showme
属性添加到控制器
试试这个:
<div ng-app>
<div ng-controller="showCrtl">
<div ng-hide="showCrtl.showme">
<p ng-mouseenter="showCrtl.showme=!showCrtl.showme">
mouse enter
</p>
</div>
<input type="search" ng-if="showCrtl.showme" ng-mouseleave="showCrtl.showme=false">
</div>
</div>
鼠标进入
事实上,根据一般经验,永远不要直接在模板中访问范围,因为很难确保您正在访问您认为正在访问的范围。始终通过您正在使用的控制器访问属性。请检查此提琴,您可以指定我在哪里出错@CemArguvanlı请检查此提琴,您可以指定我在哪里出错@CemArguvanlı@Shikhathakur很高兴帮助您,请查看更新的答案,有助于你更清楚地理解。阅读参考答案也一样,谢谢:)@Shikhathakur很高兴能帮助你,看看更新的答案,会帮助你更清楚的理解。请阅读参考答案,谢谢:)
<div ng-app>
<div ng-controller="showCrtl">
<div ng-hide="showCrtl.showme">
<p ng-mouseenter="showCrtl.showme=!showCrtl.showme">
mouse enter
</p>
</div>
<input type="search" ng-if="showCrtl.showme" ng-mouseleave="showCrtl.showme=false">
</div>
</div>