我有一个模态,其内容是由javascript方法生成的(原因是内容强烈依赖于从数据库中检索的数据,包括层次结构及其结构)。
最初,我已经部署了复选框(作为生成的HTML的一部分),如下所示:
<input type="checkbox"
id="Chkbox_1"
onClick="Handle_Select(this,1,'Topic_34343')">
并且,在javascript(Handle_Select
)中,我可以通过测试this.checked
验证复选框是否已选中,如下所示:
Handle_Select = function (p_this,p_Topic_ID, p_Topic_Name) {
if(p_this.checked) {...}
}
现在,我将onClick
替换为ng-click
(如上所述,我使用的是AngularJS),突然this
不再拥有输入元素的属性但似乎是控制器的内容。当然,现在看起来相同的功能:
$scope.Handle_Select = function (p_this,p_Topic_ID, p_Topic_Name) {...}
任何建议都将不胜感激。 感谢。
答案 0 :(得分:2)
最好使用以下语法:
<input type="checkbox"
id="Chkbox_1"
ng-click="Handle_Select($event, 1, 'Topic_34343')">
角度代码将是:
$scope.Handle_Select = function ($event,p_Topic_ID, p_Topic_Name) {
var target = $event.target;
if (target.checked) {
// some code
}
}
答案 1 :(得分:0)
Angular附带了一些方便的指令,它们抽象了很多典型的javascript样板代码。在这种情况下,请考虑使用ng-model
和ng-checked
指令。 ngModel会将您的input元素绑定到作用域上定义的值,ngChecked将根据您定义的属性检查或取消选中输入:
<input type="checkbox"
id="Chkbox_1"
ng-model="your_scope_data" ng-checked="your_scope_data.is_checked">
在控制器中定义$scope.your_scope_data
,然后使用angular将它与模板绑定在一起,以使值保持同步。 your_scope_data.is_checked
是与ng-model
绑定到输入元素的数据的任意属性。如果你想进行比较,你也可以在ng-checked
中评估一个简单的表达式。希望这有帮助,祝你好运!