请原谅这个可能相当简单的问题,但我必须对客户请求进行一些小改动,并且不要真正了解AngularJS。
在this example中,使用HTML代码中的这些{{ .. }}
指令请求复选框的值 - 但是如何在JavaScript中访问它?
这是我试图从中获取价值的复选框:
<input ng-switch-when="java.lang.Boolean" type="checkbox"
ng-model="nounTypesOnly" required
ng-true-value="1" ng-false-value="0"></input>
在filter()
方法中,我尝试访问这样的值:
$scope.filter = function(topicIndex) {
// Already tried:
// $scope.$digest()
// $scope.nounTypesOnly is undefined at this point!
$scope.filterRequest.nounTypesOnly = $scope.nounTypesOnly;
$scope.doFilter();
};
如果我调试此$scope.nounTypesOnly
未定义。为了从输入字段nounTypesOnly
获取该值,我需要更改什么?
答案 0 :(得分:0)
您遇到了范围继承的问题。
<ng-switch-when>
将产生一个新的范围。因为ng-model="nounTypesOnly"
与这个孤立的范围绑定而不是外部范围。
尝试将模型值分配给复杂对象,即ng-model="foo.nounTypesOnly"
。这可以确保在外部作用域上初始化foo = {}
时,可以通过给定名称在外部作用域中访问它。
在您的控制器中,执行以下操作:
function MyController($scope) {
$scope.data = {};
}
在模板中,执行以下操作:
<input ng-switch-when="java.lang.Boolean" ng-model="data.nounTypesOnly" />
这样可以确保nounTypesOnly
正确传播回外部(即控制器)范围。