HTML:
...
<input ng-init="item.check=false" type="checkbox" ng-model="item.check">
...
<input ng-init="item.name=''" class="form-control" ng-model="item.name">
...
JS:
var myApp = angular.module('myApp', []);
myApp.controller('AppCtrl', function ($scope, $http) {
var refresh = function() {
$scope.item.check = false;
$scope.item.name = "";
}
//Call upon loading app to initialize values, also called upon events to refresh the field
refresh();
我最初认为只有JS足以初始化值,所以我摆脱了复选框和表格的ng-init然后最终得到错误:
TypeError: Cannot set property 'name' of undefined
如果我刚离开两个ng-init,应用程序就可以运行。它也适用于我从2个元素中的一个中删除ng-init(因此从复选框或表单中删除)但如果我删除它们将无法工作。这里发生了什么?我这样做是正确的还是有更好的初始化方法?
感谢。
答案 0 :(得分:1)
您可以在控制器的第一行添加$scope.item = {}
。
当$scope.item.name
本身不存在时(或某些情况下不是对象),当您尝试访问$scope.item
时,Javascript报告错误。
执行ng-init
时,angular会为您创建对象,因此您不会收到错误。
答案 1 :(得分:1)
将其添加到控制器
$scope.item = {};