发送一个javascript变量的值给angular js变量

send a value of javascript variable to a angular js variable

本文关键字:变量 js angular javascript 一个      更新时间:2023-09-26

我正在阅读一个CSV文件,我把它转换成一个数组作为angularjs脚本,但我必须把它传递给angularjs中的一个变量这是一个javascript:

    $.get("test.csv", function(data) {
        var rows = data.split("'r'n");
                if(rows.length>0){
                    var firstRowCells = GetCSVCells(rows[0], ",");
                    var dataArray = new Array();
                    for(var i=1;i<rows.length;i++)
                    {
                        var cells = GetCSVCells(rows[i], ",");
                        var obj = {};
                        for(var j=0;j<cells.length;j++)
                        {
                            obj[firstRowCells[j]] = cells[j];
                        }
                        dataArray.push(obj);
                    }

                    $("#dvCSV").html('');
                    alert("dataarray"+dataArray);
                    $("#dvCSV").append(JSON.stringify(dataArray));
                    var myjson=JSON.stringify(dataArray);
                    //alert(myjson);
                }
hera atlast value of dataArray variable have to pass to angular js variable

,我必须将它存储在angular js变量$scope.test中app.js:

angular.module('sortApp', [])
.controller('mainController', function($scope) {
  $scope.test=$scope.dataf;

你为什么要用jQuery.get()呢?使用angular的$http:

angular.module('sortApp', [])
.controller('mainController', function($scope, $http) {
    $http.get("test.csv")
    .then(function(data) {
        var rows = data.split("'r'n");
        if(rows.length > 0){
            var firstRowCells = GetCSVCells(rows[0], ",");
            var dataArray = new Array();
            for (var i=1; i < rows.length; i++)
            {
                var cells = GetCSVCells(rows[i], ",");
                var obj = {};
                for(var j=0; j < cells.length; j++)
                {
                    obj[firstRowCells[j]] = cells[j];
                }
                dataArray.push(obj);
            }
            /*
                You shouldn't use jQuery here anyway,
                just bind a scope value to your html...
                $("#dvCSV").html('');
                alert("dataarray"+dataArray);
                $("#dvCSV").append(JSON.stringify(dataArray));
                var myjson=JSON.stringify(dataArray);
            */
            $scope.test = dataArray;
        }
    })
})

和在HTML中:

<div ng-app="sortApp" ng-controller="mainController">
    {{test}}
</div>

如果您不能使用$http,那么可以使用$apply()来实现这一点,请查看应用程序的基本用法代码片段。

function jsfun()
{
  var data = "i am Ouside scope var ";
  var elem = document.getElementById("mainDiv");
  var scope = angular.element(elem).scope();
  
  
  scope.$apply(function(){
  
    scope.data = data;
  })
}
var app = angular.module('myapp',[]);
app.controller('demoCtrl',function($scope){
  $scope.data = "";
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app='myapp'>
  <div id="mainDiv" ng-controller="demoCtrl">
  
    value from js :: {{data}}
    
    <br>
    <button onclick="jsfun()">get data from js</button>
  </div>  
</div>