数据就绪时重复ng-

时间:2016-02-04 09:00:21

标签: javascript angularjs data-binding angularjs-ng-repeat

我的网站有两个网页:

  1. 设置页面:包含JSON内容的网页,如下所示:

    {"来源":[" 1"" 2"" 3"" 4"] }

  2. 显示所有已知"来源的网页"在系统中。只需一个接一个地打印出来。

  3. 当我的应用程序加载时,我下载了源页面,并保存在$scope.Settings.Sources的范围内。

    我的AngularJS代码:

    $scope.getSettings = function (ID, successCallback, failureCallback)
    {
        $scope.ID = ID;
    
        $http.get("/sources?ID=" + ID).then(function (response)
        {
            if (response.status == 200)
            {
                $scope.Settings = response.data;
                successCallback();
            }
            else
            {
                failureCallback();
            }
        });
    }
    
    function getSettings_success()
    {
        // Ready to update the ng-repeat NOW.
    }
    
    function getSettings_error()
    {
        alert('Error');
    }
    
    $scope.getSettings(1, getSettings_success, getSettings_error);
    

    现在,当我准备好$scope.Settings.Sources时,我所要做的就是在特定的HTML模板中打印每个soruce。因此,我正在考虑使用ng-repeat来完成这项任务。像这样:

    <div ng-init="sources=$scope.Settings.Sources">
        <ul>
            <li ng-repeat="source in sources">
                {{ source }}
            </li>
        </ul>
    </div>
    

    不幸的是,这段代码不起作用。这是因为在加载页面时,$scope.Settings.Sources还没有准备就绪。因此,ng-repeat必须在&#34;来源&#34;之后运行。页面已下载。

    这可能吗?如果是,怎么样?

1 个答案:

答案 0 :(得分:2)

对于这种情况,您不应该使用ng-init,因为数据来自Ajax并且您要将空白对象分配给源。原因尚未回复。相反,我会直接在您的视图中使用Settings.Sources变量。

<强>标记

<div>
    <ul>
        <li ng-repeat="source in Settings.Sources">
            {{ source }}
        </li>
    </ul>
</div>
  

旁注$scope变量可以直接在angular指令中访问,您不需要明确指定$scope

相关问题