以我的形式:
<div ng-controller="myCtrl" ng-init="init('<%=JSON.stringify(data)%>')">
<input type="text" ng-model="Reg.email" />
</div>
在我的角度控制器中
myApp.controller("myCtrl", ['$scope', '$http', '$parse', function($scope, $http, $parse) {
$scope.init = function(myJsonData){
if(myJsonData!=null)
{
var myData = angular.fromJson(myJsonData);
$scope.Reg.email = "test@example.com";
}
};
}]);
上面的代码不会将值初始化为输入字段。但如果我通过删除注册来更改模型名称,代码将正常工作。
即。 $ scope.email 正在运行,而 $ scope.Reg.email 在我的情况下无效。
请支持!
答案 0 :(得分:1)
$scope.Reg
的价值是什么?
当您尝试访问未定义变量或属性的任何属性时,JavaScript会引发错误。这里没有定义$scope.Reg
,如果没有定义,则需要先设置$ scope.Reg = {}。然后,您可以在模板和JavaScript代码中使用$ scope.Reg的值及其属性。
注意:如果您尝试从角度模板访问未定义变量或属性的属性,AngularJS不会抛出任何此类错误。
在您的情况下,调用init()时未定义Reg属性。如果没有为ng-model等任何setter方法定义属性,Angular会定义属性。
myApp.controller("myCtrl", ['$scope', '$http', '$parse', function($scope, $http, $parse) {
$scope.Reg=$scope.Reg||{}; // Define if not defined
$scope.init = function(myJsonData){
if(myJsonData!=null)
{
var myData = angular.fromJson(myJsonData);
$scope.Reg.email = "test@example.com";
}
};
}]);
答案 1 :(得分:1)
答案 2 :(得分:1)
如果$scope.Reg
未定义,请先按$scope.Reg = {}
对其进行初始化,然后访问$scope.Reg
的属性