Angularjs不承认“这个”

时间:2016-03-13 16:02:26

标签: javascript angularjs

我有一个模态,其内容是由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) {...}

任何建议都将不胜感激。 感谢。

2 个答案:

答案 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-modelng-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中评估一个简单的表达式。希望这有帮助,祝你好运!