Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 鼠标左键不能正常工作_Javascript_Angularjs - Fatal编程技术网

Javascript 鼠标左键不能正常工作

Javascript 鼠标左键不能正常工作,javascript,angularjs,Javascript,Angularjs,我有一个场景,当我用鼠标输入一些文本时,我需要得到一个输入框,文本应该隐藏,当我离开文本框时,文本框应该隐藏,我应该显示回文本 但这并没有发生 Html 这是我试过的 非常感谢您的帮助。问题是您在ng if指令上有原语值,您知道ng if在DOM上呈现该元素时会创建子范围。要解决这个问题,我建议您只需按照点规则定义新对象即可。然后定义要在该对象内使用的所有属性 如果您想更深入地了解范围继承是如何工作的,可以参考 因此,在您的代码中,您应该定义一个对象,即$scope.model={},然后在该对

我有一个场景,当我用鼠标输入一些文本时,我需要得到一个输入框,文本应该隐藏,当我离开文本框时,文本框应该隐藏,我应该显示回文本

但这并没有发生

Html

这是我试过的


非常感谢您的帮助。

问题是您在
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>