javascript - AngularJS:针对特定的 "ID"进行 ng-repeat?

标签 javascript angularjs angularjs-ng-repeat

首先,我是 angularJS 的新手,所以要温柔! 其次,我知道 angularJS 中没有“ID”、“class”等,所以标题可能有点误导。但是,我没能更好地描述这个问题。

事情是这样的:我有一个元素数组,每个元素都有其详细信息。现在,我 ng-repeat 第一组元素以显示基本信息。当用户点击“详细信息”时,会加载相应的详细信息。然而,在我的例子中,每个项目都获得了所选元素的详细信息。

实践案例:http://jsbin.com/zilayija/2/edit

有什么方法可以将相应的详细信息附加到仅匹配 Id 的信息中吗?

最佳答案

这里真正的问题是您将详细信息绑定(bind)到 $scope 上的单个数组,即 details。由于在 ng-repeat 的每次迭代中都会使用此引用,因此您最终会在任何地方显示它。

编辑:如评论中所述,原始问题并未反射(reflect)实际提出的问题。所要求的是需要异步加载详细信息,并且仅在请求(单击)时才加载。因此我更新了the code example ).

发生了什么变化?

HTML:

<li ng-repeat="item in items">
    {{item.name}}
    <a href="" ng-click="item.showDetails()">show details</a>
    <p ng-show="item.detailsVisible" ng-repeat="detail in getDetails(item.id)">
        {{detail.belongsToItem}}
    </p>
</li>

JS:

var Item = function(id, name){
    var promiseDetailsAreLoaded;
    var self = this;

    this.id = id;
    this.name = name;
    this.detailsVisible = false;
    this.details = [];
    this.showDetails = function(){
        if(!promiseDetailsAreLoaded){
          promiseDetailsAreLoaded = $http.get("").then(function(){
              // mock adding details
              for(var i = 0; i < itemDetails.length; i++){
                  if(itemDetails[i].belongsToItem === self.id){
                      self.details.push(itemDetails[i]);
                  }
              }
          });
        }
        promiseDetailsAreLoaded.then(function(){
            self.detailsVisible = !self.detailsVisible;  
        });
    }
};

$scope.items = [
  new Item(1, "Item 1"),
  new Item(2, "Item 2"),
  new Item(3, "Item 3")
];

关于javascript - AngularJS:针对特定的 "ID"进行 ng-repeat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23383835/

相关文章:

javascript - 如何从 Safari 4 的 Javascript 调试器中删除断点?

angularjs - 使用 Protractor 多功能配置运行 e2e 测试,但限制最大 Webdriver 实例

javascript - 尽管我使用具有正确语法的 ng-show,但类 ="ng-hide"会自动附加

javascript - angularjs ui-scroll 获取所有可见行

javascript - for 循环内的变量给出最大值

javascript - 当涉及到数据库请求时,WebSockets 可以取代 AJAX 吗?

javascript - @babel/eslint-parser 在 vue 文件上抛出错误

javascript - 将新对象传递给 Angular 绑定(bind)时出现无限摘要错误

javascript - 带 ng-repeat 的条件 HTML

javascript - 如何在 AngularJS ng-repeat 循环中显示对象(仅当其嵌套图像存在时)?