我想做这样的事情
<input type="checkbox" ng-model="first" ng-click="chkSelect()"/><label>First</label>
<input type="checkbox" ng-model="second" ng-click="chkSelect()"/><label>Second</label>
<input type="checkbox" ng-model="third" ng-click="chkSelect()"/><label>Third</label>
<input type="checkbox" ng-model="forth" ng-click="chkSelect()"/><label>Forth</label>
<button>Selected</button>
点击按钮,我想显示所选的复选框labelname。
$scope.chkSelect = function (value) {
console.log(value);
};
答案 0 :(得分:1)
因为映射了复选框,所以可以在chkSelect()函数中引用$ scope.first,$ scope.second等。它也可以将一组复选框映射为单个数据数组,而不必为每个复选框命名。如果要生成复选框(可能来自一组数据),这很方便。
答案 1 :(得分:1)
我同意Bublebee Mans的解决方案。您已经详细说明了为什么要尝试获取标签的详细信息。无论如何,如果你真的想要它,你可以这样做:
$scope.chkSelect = function (value) {
for(var key in $scope){
var inputs = document.querySelectorAll("input[ng-model='" + key + "']");
if(inputs.length){
var selectedInput = inputs[0];
var label = selectedInput.nextSibling;
console.log(label.innerHTML);
}
};
};
你可以搞砸它,看看它是否确实被选中了。
小提琴:http://jsfiddle.net/pzz6s/
旁注,对于任何知道角度的人,请原谅我。
答案 2 :(得分:0)
您希望控制器中包含以下内容(未经测试,在内存中工作):
$scope.checkBoxModels = [ { name: 'first', checked: false }, { name: 'second', checked: false }, { name: 'third', checked: false }, { name: 'fourth', checked: false } ];
然后在你看来:
<input ng-repeat"checkboxModel in CheckBoxModels" ng-model="checkBoxModel.checked" ng-click="chkSelect(checkBoxModel)" /><label>{{checkBoxModel.name}}</label>
然后更新你的功能:
$scope.chkSelect = function (checkBoxModel) {
console.log(checkBoxModel.name);
};
答案 3 :(得分:0)
如果您正在处理服务器数据,则可能需要隔离的html块并仅在控制器中处理数据。
你可以通过在控制器中创建数组,也可以从响应中创建数据,并使用ngRepeat指令独立处理html代码。
以下是我告诉你的事情:
<强> HTML:强>
<form ng-controller="MyCtrl">
<label ng-repeat="name in names" for="{{name}}">
{{name}}
<input type="checkbox"
ng-model="my[name]"
id="{{name}}"
name="favorite" />
</label>
<div>You chose <label ng-repeat="(key, value) in my">
<span ng-show="value == true">{{key}}<span>
</label>
</div>
</form>
<强>的Javascript 强>
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.names = ['pizza', 'unicorns', 'robots'];
$scope.my = { };
}