Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在JS而不是HTML中初始化ng模型_Javascript_Html_Angularjs_Initialization - Fatal编程技术网

Javascript 无法在JS而不是HTML中初始化ng模型

Javascript 无法在JS而不是HTML中初始化ng模型,javascript,html,angularjs,initialization,Javascript,Html,Angularjs,Initialization,HTML: 我最初认为只使用JS就足以初始化值,因此我去掉了复选框和表单的ng init,最后得到了错误: var myApp = angular.module('myApp', []); myApp.controller('AppCtrl', function ($scope, $http) { var refresh = function() { $scope.item.check = false; $scope.item.name = ""; } //Call upon

HTML:

我最初认为只使用JS就足以初始化值,因此我去掉了复选框和表单的ng init,最后得到了错误:

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();
如果我只保留两个ng init,应用程序就会工作。当我只从这两个元素中的一个元素中删除ng init时(因此从复选框或表单中删除),它也会起作用,但如果我同时删除这两个元素,它将不起作用。这是怎么回事?我这样做是正确的还是有更好的初始化方法


谢谢

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

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


当您执行
ng init
时,angular会为您创建对象,这样您就不会出现错误。

将此添加到控制器中

TypeError: Cannot set property 'name' of undefined

我懂了!我们将项初始化为对象或字典?对象,这样说正确吗。javascript没有字典类型AFAIK,我们只使用object来实现一个。
TypeError: Cannot set property 'name' of undefined
$scope.item = {};