Angularjs 更新ng重复项';在单击时重复ng中的s数据

Angularjs 更新ng重复项';在单击时重复ng中的s数据,angularjs,angularjs-ng-repeat,Angularjs,Angularjs Ng Repeat,我正在使用angularjs框架进行我的第一步,我不明白如何在第一个项目中更新第二个ng repeat数据,只有当用户单击它时才更新它(延迟加载) {{customer.ClientId} {{invoice.Id} 我怎样才能做到呢?谢谢你的帮助!:) 您可以这样做: <button ng-click="loadInvoices(customer);" type="button" class="btn btn-default btn- xs">Invoces</butto

我正在使用angularjs框架进行我的第一步,我不明白如何在第一个项目中更新第二个ng repeat数据,只有当用户单击它时才更新它(延迟加载)


{{customer.ClientId}
{{invoice.Id}

我怎样才能做到呢?谢谢你的帮助!:)

您可以这样做:

<button ng-click="loadInvoices(customer);" type="button" class="btn btn-default btn- xs">Invoces</button>
通过检查(!this.invoices){…}(
指向当前客户范围),您可以确保当前客户尚未加载发票,并且需要加载发票。在随后的按钮上单击“客户”。发票将已可用,您将不会再次加载数据

我还添加了一个示例,说明如何使用
Customer
服务来适应此工作流


查看演示:使用ng控制器指令

只需使用ng控制器指令来告诉客户范围将由您传入的控制器实例进行管理


带有自定义指令

这方面的典型设计:带有客户控制器的客户指令,该控制器管理一个客户的范围

关键是:

  • ng repeat创建子作用域
  • 添加一个指令,将控制器附加到每个作用域
  • 现在,您可以独立管理每个客户范围

控制器,在这两种情况下

此控制器将保存
loadInvoices
,它将
invoices
数组附加到客户范围

为什么是自定义指令?您还可以为客户提供单独的模板、特定的链接前和链接后功能等

为什么特定于客户的控制器自作用域继承将使
loadInvoices
上下文成为特定于客户的作用域?可扩展性、可测试性、解耦性


您是否尝试过使用ng repeat更改
ng repeat=“发票中的发票”
通过
ng repeat=“客户中的发票.发票”
Hi@JonathandeM,谢谢你的回答。我的客户当时没有invoices属性,只有当用户单击按钮:$scope.loadInvoices=function(customer){//http请求}时,我才会得到它(延迟加载)!非常感谢@dfsq!你救了我一天!;)promise success回调中的
this
将不是正确的上下文。
<button ng-click="loadInvoices(customer);" type="button" class="btn btn-default btn- xs">Invoces</button>
$scope.loadInvoices = function(customer) {
    if (this.showDetails = !this.showDetails) {
        if (!this.invoices) {
            // Load invoices for current customer (probably using service)
            Customer.loadInvoices(customer.ClientId).then(function(invoices) {
                customer.invoices = invoices;
            });
        }
    }
}