使用控制器中$ scope函数返回的数组

时间:2016-07-20 20:10:09

标签: angularjs model-view-controller ionic-framework angularjs-scope

在我的控制器中,我创建了$scope function,返回array。那个function使用来自ng-model指令的视图中的数据,一切正常(当我用视图中的表达式调用此函数时,我得到返回的数据),除了当我想在我的控制器中使用返回的array,我什么也没得到。

Plunker

JS 代码:

app.controller('CalculatorCtrl', function($scope) {

  $scope.deparature = {
    'lat_1': '',
    'lat_2': '',
    'lat_3': '',
    'long_1': '',
    'long_2': '',
    'long_3': ''
  }

  $scope.arrival = {
    'lat_1': '',
    'lat_2': '',
    'lat_3': '',
    'long_1': '',
    'long_2': '',
    'long_3': ''
  }

  $scope.select = {
    'departure_1': '',
    'departure_2': '',
    'arrival_1': '',
    'arrival_2': ''
  }

  $scope.depCoordinate = function() {

    var cordLat = $scope.deparature.lat_1 + '/' + $scope.deparature.lat_2 + '/' + $scope.deparature.lat_3 + '/';

    if ($scope.select.departure_1 === 'S') {
      var temp = '-' + cordLat;
      var CordLatS = Dms.parseDMS(temp);
    } else {
      var CordLatS = Dms.parseDMS(cordLat);
    };

    var cordLong = $scope.deparature.long_1 + '/' + $scope.deparature.long_2 + '/' + $scope.deparature.long_3 + '/';

    if ($scope.select.departure_2 === 'W') {
      var temp = '-' + cordLong;
      var CordLongW = Dms.parseDMS(temp);
    } else {
      var CordLongW = Dms.parseDMS(cordLong);
    };

    return [CordLatS.toFixed(5), CordLongW.toFixed(5)];
  }

  var cord = $scope.depCoordinate();
  var lati = cord[0];
  console.log(lati);

  /*I need to pass the array result to var p1. How I can do that?*/
  $scope.distance = function () {
      var p1 = new LatLon(50.06632, -5.71475);
      var p2 = new LatLon(58.64402, -3.07009);
      return p1.distanceTo(p2);

};
});

2 个答案:

答案 0 :(得分:0)

你是什么意思&#34;我什么都没得到&#34;?据我所知,你在控制器的init状态上写了<input type="button" id="btnSearch" value="Search" onclick="GetValue();" /> <p id="message" ></>。执行控制器后,该功能将立即生效。

我认为问题是初始状态。因为您在首次创建控制器时没有任何数据。您的所有变量都是&#39;&#39;。

那么,你想要做什么呢?您可以在视图层上使用ngChange指令,其中元素正在使用用于监视更新的函数更新变量(deparature,arrival,select)。然后你需要在控制器中编写一个函数,如下所示;

$scope.depCoordinate();

答案 1 :(得分:0)

首先,您的 plunker 中有一些内容应该与此相关:

  1. 从不执行此操作:<p>Test: {{ depCoordinate() }}</p>
  2. 它会多次调用你的函数导致一些问题。

    1. 不要将ng-init()用于此类事情:<div class="list" ng-init="initWaves()">。它应仅在特定情况下使用(即ng-repeat),请检查docs
    2. 然后..如果我理解你的问题,你想在你的视图中使用returned array,那么,如果我是正确的,这里是 how-to

      $scope.array = [CordLatS.toFixed(5), CordLongW.toFixed(5)];
      return $scope.array;
      

      视图中,只需使用它:

      {{ array }} //或者你想用它做什么。