gpt4 book ai didi

javascript - AngularJS ng-class,表单脏时的条件

转载 作者:行者123 更新时间:2023-11-30 08:51:03 26 4
gpt4 key购买 nike

在我的主要 html 中(假设它使用 ng-controller="controller1"),我想在 div 上放置一个条件类,只要 ng-controller="controller2"下的表单就会更改其背景颜色很脏。

有没有办法将其作为条件语句放入 ng 类中?

将有多种形式和多个相关的 div 需要协调,所以我只是想尽可能地想出最简单的方法。

编辑-我当前设置的示例代码:

HTML:

<html ng-app="testapp">
<body ng-controller="ControllerA">
<p ng-class="{'updates-made' : boolUpdatesMade}">
My background will change whenever an update is made on the form
</p>

<form name="editForm" ng-controller="ControllerB">
<input type="text" name="changeme">
<button ng-click="save()">Save</button>
</form>
</body>
</html>

Controller.js:

testapp.controller("ControllerB", function($scope){
$scope.save = function(){
if($scope.editForm.$dirty){
$scope.boolUpdatesMade = true;
}

}
}

我希望发生的是,当我在 ControllerB 中设置 boolUpdatesMade=true 时,CSS 类“updates-made”将应用于 HTML 中的

。事实并非如此。

这里是这个例子的 JSFiddle 链接:http://jsfiddle.net/tPGLT/1/

最佳答案

Angular 已经将一个名为“ng-dirty”的类添加到表单(和单独的字段)中,只要它被触摸...假设您有一个表单元素可以附加到它。最简单的是创建一个 CSS 类,根据它你想要的任何样式。如果你更喜欢自己的类(class),你可以做一个 ng-class 来评估表单状态:

<form name="my_form" ng-class="{'class-name' : my_form.$dirty}">

编辑:

刚刚看到您想要将其放在不同的 div 上。假设 Div 与表单在同一个 Controller 下,这仍然有效:

<form name="my_form">

<div ng-class="{'class-name' : my_form.$dirty}">

如果 div 与表单处于不同的 Controller 范围内,这仍然是可能的,但您必须使用事件或服务在两个 Controller 之间进行通信。

现在喝咖啡。看到您确实想要在 Controller 之间进行通信,您可以在另一个答案中使用 $watch 技术来查看模型是否已更改(因为 $watch 不会在表单状态上工作)然后使用服务或 $broadcast/$emit 在另一个 Controller 中设置一个 var。

关于javascript - AngularJS ng-class,表单脏时的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17837243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com