在单击角度时更改属性
Change Property on click angularjs
我想在单击<div>
时更改单选按钮的属性。在下面的代码中,div 有一个类,如果单击div,我必须将单选按钮的属性更改为 true。我用jQuery编写了这个事件处理。
你能告诉我如何使用Angularjs解决这个问题吗?
var app = angular.module('myapp', []);
app.controller('MainCtrl', function($scope) {
//How to write code here in Angular//
});
<!DOCTYPE html>
<html ng-app='myapp'>
<head>
<script data-require="jquery@*" data-semver="2.1.4" src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script data-require="angular.js@1.4.8" data-semver="1.4.8" src="https://code.angularjs.org/1.4.8/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" >
<script src="script.js"></script>
</head>
<body ng-controller="MainCtrl">
<div>
<input ng-click="Large()" id="large" type="radio" name="button">Large
<input ng-click="Medium()" id="medium" type="radio" name="button">medium
<input ng-click="Small()" id="small" type="radio" name="button">Small
</div>
<div>
<div class="col-xs-12 field">first //click</div><br/>
<div class="col-xs-6 field">second //click</div><br/>
<div class="col-xs-4 field">third //click</div>
</div>
<script>
$(document).ready(function () {
$('.field').bind('click', function () {
if ($(this).hasClass('col-xs-12')) {
$('#large').prop("checked", true);;
}
else if ($(this).hasClass('col-xs-6')) {
$('#medium').prop("checked", true);
}
else
$('#small').prop("checked", true);
})
});
</script>
</body>
</html>
(也可在 https://plnkr.co/edit/PNabPp2OvYAS76p3KfsH?p=preview 获得)
使用
ng-click
指令更新model
值
试试这个:
var app = angular.module('myapp', []);
app.controller('MainCtrl', function($scope) {
$scope.val = ''
$scope.clickHadler = function(val) {
$scope.val = val;
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app='myapp' ng-controller="MainCtrl">
<div>
<input ng-click="Large()" ng-model='val' value='first' id="large" type="radio" name="button">Large
<input ng-click="Medium()" ng-model='val' value='second' id="medium" type="radio" name="button">medium
<input ng-click="Small()" ng-model='val' value='third' id="small" type="radio" name="button">Small
</div>
<div>
<div class="col-xs-12" ng-click='clickHadler("first")'>first //click</div>
<br/>
<div class="col-xs-6" ng-click='clickHadler("second")'>second //click</div>
<br/>
<div class="col-xs-4" ng-click='clickHadler("third")'>third //click</div>
</div>
</body>
由于你不能使用label
,角度解决方案将是使用model
值
var app = angular.module('myapp', [], function() {})
app.controller('MainCtrl', function($scope) {
$scope.fieldClicked = function(size) {
if (size == 'col-xs-12') {
$scope.size = 'large';
} else if (size == 'col-xs-6') {
$scope.size = 'medium';
} else if (size == 'col-xs-4') {
$scope.size = 'small';
}
}
})
<link href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myapp">
<div ng-controller="MainCtrl">
<div>
<input ng-model="size" value="large" type="radio" name="button">Large
<input ng-model="size" value="medium" type="radio" name="button">medium
<input ng-model="size" value="small" type="radio" name="button">Small
</div>
<div>
<!--ng-click="fieldClicked(div.size)" in template-->
<div class="col-xs-12 field" ng-click="fieldClicked('col-xs-12')">first</div>
<br/>
<div class="col-xs-6 field" ng-click="fieldClicked('col-xs-6')">second</div>
<br/>
<div class="col-xs-4 field" ng-click="fieldClicked('col-xs-4')">third</div>
</div>
</div>
</div>
这里不需要脚本,只需使用label
而不是div
var app = angular.module('myapp', [], function() {})
app.controller('MainCtrl', function($scope) {
})
<link href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myapp">
<div ng-controller="MainCtrl">
<div>
<input ng-click="Large()" id="large" type="radio" name="button">Large
<input ng-click="Medium()" id="medium" type="radio" name="button">medium
<input ng-click="Small()" id="small" type="radio" name="button">Small
</div>
<div>
<label for="large" class="col-xs-12 field">first</label>
<br/>
<label for="medium" class="col-xs-6 field">second</label>
<br/>
<label for="small" class="col-xs-4 field">third</label>
</div>
</div>
</div>
相关文章:
- 手柄'img'单击事件并插入'alt'使用jQuery将属性转换为文本框
- 从其他元素上的单击事件访问image src属性
- 单击按钮时的窗口属性
- 单击TextArea'时,文本区域中的属性名称是什么;s上下箭头按钮
- 如何使用单击属性和工具提示动态创建表格单元格,该工具提示将超链接到页面
- 通过 JQuery 获取单击的复选框的值属性
- 在单击onclick属性后的按钮时执行f:setPropertyActionListener
- 单击没有 src 属性的 iframe 中的元素
- j查询在设置属性后在后续单击时不读取数据属性
- 如何防止jQuery在单击时更改href属性
- 使用CasperJS以特定格式单击具有可变属性值的元素
- 如何选择并单击没有 id 属性的按钮
- 单击“替换”时JS属性值
- 如果作用域值等于单击的元素的属性值,则Ng类
- (JavaScript/HTML)如何在单击按钮时更改样式属性中的显示
- 动态HTML包括一个Angular'ng单击'获胜的属性'不要开火
- 属性单击空值
- 为什么我收到“无法读取空错误的属性'单击'
- 修改文本框以使某些文本在使用占位符属性单击时消失
- 更改属性单击Javascript