【发布时间】:2016-09-13 11:20:03
【问题描述】:
我在指令中有一个单选按钮,并且我在页面上有许多这样的指令。所有这些单选按钮都具有相同的名称。当我单击其中任何一个时,$watch 中的 newValue 是未定义的。 ng-change 事件也只触发一个(我猜出于同样的原因)。我的问题是如何知道每次点击时指令内单选按钮的当前状态(我将传递给父指令)?
var app = angular.module("app", []);
app.directive("choiceRb", function() {
return {
template: '<input type="radio" id="{{elid}}" name="selector" ng-change="onChange()" ng-model="checked" >',
scope: {
elid: "@"
},
link: function ($scope, $element, attr, cntr) {
$scope.checked = $element[0].querySelector("input[type=radio]").checked;
$scope.$watch('checked', function (newval, oldval) {
console.log(newval);
}, true);
$scope.onChange = function () {
console.log("onChange");
}
}
};
});
app.controller("myC", ["$scope", function ($scope) {
$scope.model = {};
$scope.model.elid = "1";
$scope.model.elid1 = "2";
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
<div ng-app="app" ng-controller="myC">
<div style="width:300px; height:300px; border:1px solid red;position:relative;">
<choice-rb elid="{{model.elid}}"></choice-rb>
<choice-rb elid="{{model.elid}}"></choice-rb>
</div>
</div>
【问题讨论】:
标签: angularjs angularjs-directive