带有点(。)的$ scope没有初始化以角度输入字段的值

时间:2017-02-22 09:52:44

标签: angularjs sails.js

以我的形式:

<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 在我的情况下无效。

请支持!

3 个答案:

答案 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)

问题出现了,因为您没有定义$scope.Reg对象。

定义像$scope.Reg = {};

这样的对象

工作plnkr Link

请检查希望这对你有帮助。

答案 2 :(得分:1)

如果$scope.Reg未定义,请先按$scope.Reg = {}对其进行初始化,然后访问$scope.Reg的属性

相关问题