无法在JS而不是HTML中初始化ng-model

时间:2015-07-01 19:10:34

标签: javascript html angularjs initialization

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(因此从复选框或表单中删除)但如果我删除它们将无法工作。这里发生了什么?我这样做是正确的还是有更好的初始化方法?

感谢。

2 个答案:

答案 0 :(得分:1)

您可以在控制器的第一行添加$scope.item = {}

$scope.item.name本身不存在时(或某些情况下不是对象),当您尝试访问$scope.item时,Javascript报告错误。

执行ng-init时,angular会为您创建对象,因此您不会收到错误。

答案 1 :(得分:1)

将其添加到控制器

$scope.item = {};