当在<li>标签中使用时,ng-repeat不起作用

时间:2016-07-21 17:03:54

标签: javascript html angularjs

ToDate(1388481000000) 未显示,但如果未使用span,则会显示li标记中的按钮,但是一旦我使用ng-repeat,则ng-repeat也没有显示按钮。 我曾多次使用span但从未遇到过这种情况,如果我在ng-repeat代码中使用span,则不会显示ng-repeat和按钮元素。

这是 index.html 文件:

li

这是 controller.js 文件

<ul id="contactdelete">
    <li ng-repeat="contact in $ctrl.contacts">
        <span>{{contact.name}}</span>
        <button ng-click="$ctrl.deletecontact()">Delete</button>
    </li>
</ul>

2 个答案:

答案 0 :(得分:1)

this.contacts为空,因为success回调是异步的,其上下文与构造函数不同,这就是您无法直接使用this的原因。

此外,您应该使用then函数,该函数将2个函数作为参数,一个用于成功,另一个用作错误回调。

解决此问题的一种方法是使this成为局部变量,然后在回调中使用它。

var self = this;
$http.get("/api/contacts/").then(function(response){

    self.contacts = response; // or response.data, depending of what you're receiving.

});

或者您可以使用bind功能:

$http.get("/api/contacts/").then(function(response){
    this.contacts = response; 

}.bind(this)); // notice the bind here

Angular提供了自己的bind实现:

$http.get("/api/contacts/").then(angular.bind(this, function(response){

    this.contacts = response;

}));

关于范围和背景的其他信息:

答案 1 :(得分:0)

您应该将this.contacts = result;移至内部成功功能:

 $http.get("/api/contacts/").success(function(response){

     result = response;
     this.contacts = result;

  });

我认为您必须使用result = response.data代替result = response