我有一种情况,当我在某些文本上输入鼠标时,我需要得到一个输入框,并且文本应该隐藏,而当我离开文本框时,该框应该隐藏并且我应该显示文本
但这没有发生
Html
<div ng-app>
<div ng-controller="showCrtl">
<div ng-hide="showme">
<p ng-mouseenter="showme=!showme">
mouse enter
</p>
</div>
<input type="search" ng-if="showme" ng-mouseleave="showme=false">
</div>
</div>
JS:
function showCrtl($scope){
$scope.showme=false;
}
这是我尝试过的演示
任何帮助表示赞赏。
问题是您在ng-if
指令上具有原始值,您知道ng-if
只要它在DOM上呈现该元素就会创建子范围。要解决此问题,我建议您做的是,只需Dot Rule
定义新对象即可。然后定义要在该对象内部使用的所有属性。
如果您想更深入地了解范围继承的工作原理,则可以参考此答案。
因此,在您的代码中,您应该定义一个对象eg $scope.model = {}
,然后showme
在该对象本身内部具有属性。并且无论您showme
在视图上使用什么位置,都应将其替换为model.showme
。
解决此类范围继承问题的更便捷方法是,您可以使用controllerAs
模式。因为您不使用$scope
控制器内部,所以只需将其放置在控制器上下文中即可this
。在视图上使用控制器时,您需要创建它的别名,当您想要获取变量值时,可以使用变量引用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句