ng更改函数未被调用,并且没有错误
ng-change function is not being called and no error?
我正在处理angular中的一个选择框,它似乎从未调用过ng更改函数。这是选择的代码:
<select
data-ng-options="choice.id as choice.singular for choice in model.doseUnitChoices"
data-ng-model="ucumId"
data-ng-change="updateForm()"
class="form-control input-sm">
<option value=""></option>
</select>
我已经简化了控制器功能中的代码,以实现所需的最低限度:
updateForm: function(){
console.log('test');
},
到目前为止,一切正常,下拉菜单显示了所有可用的选项,但当我选择下拉菜单中的任何选项时,它会立即变回最后一个选项,这可能意味着什么,并且从未调用更改函数,控制台中也不会出现错误?关于如何调试这个问题并找出问题所在,有什么想法吗?
更新:有趣的是,我在检查页面上的元素时发现,实际上所有的select元素都被列为selected,也许用作模型的数据有问题?查看
我发现问题是由问题范围之外的两个问题引起的:
- 调用此select时
ucumId
不存在,我想这会导致所有select选项都被设置为select - 因为上面的错误导致所有选项都被"选择"了,所以无论我在选择中做了什么,它都从未更新过值,所以没有发生任何变化
无论如何,确保"ucumId"存在解决了我遇到的问题,
我只是试着复制它,用最少的代码量,它工作得很好。
<html>
<body ng-app="app" ng-controller="myController">
<select
data-ng-options="choice as choice.label for choice in model.doseUnitChoices"
data-ng-model="ucumId"
data-ng-change="updateForm()"
class="form-control input-sm">
<option value=""></option>
</select>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js "></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-animate.min.js "></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-aria.min.js "></script>
<script>
angular.module("app",[]).controller("myController", myController)
function myController($scope) {
$scope.ucumId = "";
$scope.updateForm = function(){
console.log('test');
};
$scope.model = {}
$scope.model.doseUnitChoices = [
{id: 1, label: "one" },
{id:2, label: "two" }
]
}
</script>
</body>
</html>
我怀疑,要么是某个地方有一个小的拼写错误,要么是updateForm在某个地方被重新定义,要么是您的控制器在某个位置被重新定义。我建议把实际的代码配对,然后一块一块地删除,直到它发挥作用或类似的东西。
相关文章:
- 回复'js'仅当请求有错误时(否则使用html)
- 表单已发送,但验证有错误
- 如果文件不存在,fs.watch是否有错误处理程序
- Meteor上有错误的同步问题
- 表单验证:如果有错误,不要't使手风琴动起来
- Javascript播放声音会导致“NPObject上的错误调用方法”
- 未捕获的类型错误:调用函数时无法读取未定义的属性“then”
- 电话差距构建地理位置 NPObject 上的错误调用方法
- 间歇性 HTTP 403 禁止访问错误调用相同的 Ajax 代码
- 致命错误:调用未定义的函数 FusionCharts()
- 我有错误文档.注册元素未被细化
- 如何转换为特定于 json 的类 c#?我有错误
- 致命错误:未捕获错误:调用未定义的函数loginRelocate() Javascript
- Codeigntier/AJAX - 致命错误:调用未定义的函数 form_input() in
- 如果当前输入有错误或警告,则禁用所有下一个表单输入字段
- 通过有错误的 Ajax-Request 打印出 HTML 会阻止进一步的 JS 工作
- 范围错误:调用堆栈超出异步 .eachSeries 上的范围错误
- 脸书应用程序有错误
- 未捕获的类型错误:调用 push() 时的类型错误
- 有目的地调用$http Post Request中的错误