javascript - 在 ng-click 上设置并显示当前数据?

标签 javascript html angularjs yeoman angularjs-ng-click

我正在使用 Yeoman - Angular 生成器。
JSBin:JSBin Link

我有一个工厂设置的简单机场列表angApp.factory("Airports", function() {});并从 ng-repeat <ul ng-repeat="airport in airports.detail"> 显示.

enter image description here

我想要进行交互,当单击每个链接时,它将匹配机场代码并将其显示在新的段落标签 <p class="current">Current: {{currentAirport.name}}</p> 中.

为什么 setAirport(airport.code) 不会功能设置currentAirport.name (或显示?)当在 html 中单击机场链接时?

Controller

angular.module("ang6App")
  .controller("AirportsCtrl", function ($scope, Airports) {
    $scope.formURL = "views/_form.html";
    $scope.currentAirport = null;
    $scope.airports = Airports;
    $scope.setAirport = function(code) {
      $scope.currentAirport = $scope.airports[code];
    };

  });

同一模块中的工厂服务

angApp.factory("Airports", function() {
    var Airports = {};
    Airports.detail = {
        "PDX": {
          "code": "PDX",
          "name": "Portland International Airport",
          "city": "Portland",
          "destinations": [
            "LAX",
            "SFO"
          ]
        },
        "STL": {
          "code": "STL",
          "name": "Lambert-St. Louis International Airport",
          "city": "St. Louis",
          "destinations": [
            "LAX",
            "MKE"
          ]
        },
        "MCI": {
          "code": "MCI",
          "name": "Kansas City International Airport",
          "city": "Kansas City",
          "destinations": [
            "LAX",
            "DFW"
          ]
        }
      };
    return Airports;
});

HTML

<div class="container" ng-controller="AirportsCtrl">
  <ul ng-repeat="airport in airports.detail">
    <li><a href="" ng-click="setAirport(airport.code)">{{airport.code}}</a> -- {{airport.city}} </li>
  </ul>
  <p class="current"> current: {{currentAirport.name}}</p>
</div>

最佳答案

您的setAirport函数应编写为:

$scope.setAirport = function (code) {
  $scope.currentAirport = $scope.airports.detail[code];
};

但是,这可以通过直接传递实际的 airport 对象来简化:

<a href ng-click="setAirport(airport)">{{airport.code}}</a>

$scope.setAirport = function (airport) {
  $scope.currentAirport = airport;
};

关于javascript - 在 ng-click 上设置并显示当前数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20864187/

相关文章:

javascript - 如何按预期单独标记匹配项?

Javascript 使用数组填充选择选项

javascript - 为什么我的 div 没有出现在 jquery show 中

javascript - Angular JS : How to pass a list as a param in angular js?

带有 TypeScript 和注入(inject)的 AngularJS 过滤器

javascript - 需要帮助分离我的项目。 Angularjs+PHP+MySQL

javascript - 警报后如何停止在表单中返回 "blank"?

javascript - 在 Javascript 中从另一个数组中创建一个对象数组,对重复项进行分组

c++ - 写入 TCP 套接字不完整 C++

javascript - 如何自动检查基于另一个单选按钮的单选按钮?