Javascript 数据准备就绪时重复ng

Javascript 数据准备就绪时重复ng,javascript,angularjs,data-binding,angularjs-ng-repeat,Javascript,Angularjs,Data Binding,Angularjs Ng Repeat,我有一个包含两个网页的网站: 设置页面:包含JSON内容的网页,如下所示: <div ng-init="sources=$scope.Settings.Sources"> <ul> <li ng-repeat="source in sources"> {{ source }} </li> </ul> </div> {“来源”:[“1”、“2”、“3”、

我有一个包含两个网页的网站:

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

    <div ng-init="sources=$scope.Settings.Sources">
        <ul>
            <li ng-repeat="source in sources">
                {{ source }}
            </li>
        </ul>
    </div>
    
    {“来源”:[“1”、“2”、“3”、“4”]}

  • 显示系统中所有已知“源”的网页。把它们一个接一个地打印出来

  • 加载应用程序时,我会下载“源代码”页面,并将其保存在我的作用域中的
    $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>
    
    
    
    • {{source}}
    不幸的是,这段代码不起作用。这是因为加载页面时,
    $scope.Settings.Sources
    尚未就绪。因此,ng repeat必须在下载“源”页面后运行

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

    您不应该在这种情况下使用,因为数据来自Ajax,并且您正在将空白对象分配给源。原因还没有反应。相反,我会直接在视图中使用
    设置.Sources
    变量

    标记

    <div>
        <ul>
            <li ng-repeat="source in Settings.Sources">
                {{ source }}
            </li>
        </ul>
    </div>
    
    
    
    • {{source}}
    旁注
    $scope
    变量在角度指令内可直接访问,无需明确指定
    $scope


    这是有效的。非常感谢。但我不明白这是怎么回事?ng repeat如何“知道”在“Setting.Sources”中何时有数据?@no1lives4 angular摘要系统处理过的任何数据。angular指令中视图上绑定的任何变量,都会在每个摘要周期中计算该值(在这里,ajax完成后,angular运行摘要周期并更新绑定)