从$ http

时间:2017-09-27 16:46:31

标签: angularjs angular-components

我有以下代码使用ng-repeat显示数据表,最初模型(数组)将没有数据,但是根据请求api它接收一些数据,我正在尝试更新我的模型,但不幸的是我的视图没有得到模型更新的刷新,虽然我看到我的模型包含从api调用收到的新数据。

组件代码:

app.component('fooList', {
    bindings: {
        foo: '<'
    },
    templateUrl: '/app/foo.html',
    controllerAs: 'list',
    controller: function ($http,$scope) {
        let list=this;
        list.search=()=>{           
            $http.get('/ui/foo/'+ list.searchCriteria)
                 .success(response=>{
                     list.foo.searchResults=response.searchResults;
                 })
        }
    }
});

HTML视图:

<tr ng-repeat="foo in ::list.foo.searchResults">
        <td>{{::foo.name}}</td>
        <td>{{::foo.address}}</td>
    </tr>

到目前为止,我已经尝试了以下内容但没有帮助

  1. 最初将list.foo.searchResults设置为undefined,这是第一次正常工作,但是如果我发送不同的搜索条件,那么它又不会刷新。

  2. $ scope。$ apply(),我讨厌这样做,但尝试了正在抛出摘要错误。

  3. 在$ http的成功里面我试过下面的代码 list.foo.searchResults = 0; list.foo.searchResults.push.apply(list.foo.searchResults,response.searchResults);

  4. 再创建一个子组件并用子模板替换我的html并移动代码以将数组填充到该组件中。

  5. 非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

尝试删除::或者你可以给一个jsfiddle工作

答案 1 :(得分:1)

您必须删除一次性数据绑定

Property Get

答案 2 :(得分:1)

::用于提供单向数据绑定,请将其删除然后尝试

::如果您使用此功能,即使您的模型已更新,也不允许更新视图。

答案 3 :(得分:0)

您可以尝试在从服务中获取数据时在视图部分进行更新,在控制器部分中使用 $ scope。$ apply(),从服务中获取价值(意味着存储在数组)。

或从html部分删除 :: ,因为它在angularjs中提供了一种方式绑定。