【问题标题】:Accessing ng-model data in controller using angularjs使用 angularjs 在控制器中访问 ng-model 数据
【发布时间】:2015-04-02 14:48:00
【问题描述】:

我有一个包含 Json 数据的字符串,该字符串由另一个脚本(比如说脚本 A)生成。我必须使用 ng-model 访问这些数据。所以我尝试的是我创建了一个如下所示的输入字段并将 ng-model 附加到它。

`<input type="text" id="check" name="jsonName" ng-model="saveJson"></input>`

现在我所做的是使用脚本 A 将 Json 数据存储到此输入字段中 如下所示

document.getElementById("check").value = saveJson;

现在为了将这些数据访问为 angular,我创建了一个控制器,例如

    angular.module('myapp').controller('formDataController', ['$scope',
    function($scope){
        $scope.saveForm = function(){
            console.log($scope.saveJson);
        }
    }
]);

其中 saveForm 是在使用 ng-click 按钮单击时调用的方法

现在的问题是你直到在输入字段中存在任何交互,$scope.saveJson 会给出 undefiend 值。 但是当我在输入字段中写一些东西时,console.log 会显示带有类型值的 json 数据。

请帮忙。

【问题讨论】:

  • 您应该始终从您的控制器设置范围变量,如 $scope.saveJson = saveJson。在 Angular 之外设置范围变量将不会运行摘要循环,范围变量将不会更新..您需要执行 $scope.$apply() 来获取所有范围变量的更新值
  • 我应该如何使用这个 $scope.$apply()
  • 你可以使用if(!$scope.$$phase) $scope.$apply(),但就角度而言,这是一个糟糕的代码。'
  • 我用过但没用
  • 你应该在访问 $scope 之前在控制器内部进行操作

标签: javascript json angularjs


【解决方案1】:

您需要在控制器中将 $scope.saveJson 定义为属性

angular.module('myapp').controller('formDataController', ['$scope',
function($scope){
$scope.saveJson = "something";    
$scope.saveForm = function(){
        console.log($scope.saveJson);
    }
}
]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多