Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将异步REST调用JSON添加到Angular$scope_Javascript_Angularjs_Rest_Sharepoint 2013 - Fatal编程技术网

Javascript 将异步REST调用JSON添加到Angular$scope

Javascript 将异步REST调用JSON添加到Angular$scope,javascript,angularjs,rest,sharepoint-2013,Javascript,Angularjs,Rest,Sharepoint 2013,我需要一些帮助来理解如何构造AngularJS控制器 控制器将执行对SharePoint的异步REST调用,并将JSON结果放入$scope.SearchResults属性中 异步REST调用由getDataSP()函数执行,$scope.SearchResults在onQuerySuccess()回调中赋值。onQuerySuccess()方法包含以下语句 console.log('Search Results Returned.'+$scope.SearchResults) 它确实显示了预期

我需要一些帮助来理解如何构造AngularJS控制器

控制器将执行对SharePoint的异步REST调用,并将JSON结果放入$scope.SearchResults属性中

异步REST调用由getDataSP()函数执行,$scope.SearchResults在onQuerySuccess()回调中赋值。onQuerySuccess()方法包含以下语句

console.log('Search Results Returned.'+$scope.SearchResults)

它确实显示了预期的“[object]”,所以我知道它返回了一些东西

但是,HTML页面有以下标记来显示JSON对象。我也希望它能显示“[对象]”,但它永远不会显示

<span >{{SearchResults}}<span>
{{SearchResults}
下面是整个模块的代码

(function () {
    var app = angular.module('FormApp', []);

    app.controller('FormController', ['$scope', function ($scope) {

        var context = SP.ClientContext.get_current();
        var user = context.get_web().get_currentUser();

        function onQuerySuccess() {
            if (results && results.m_value && results.m_value.ResultTables && results.m_value.ResultTables[0] && results.m_value.ResultTables[0]) {
                $scope.SearchResults = results.m_value.ResultTables[0];
                console.log('Search Results Returned.' + $scope.SearchResults);
            } else {
                results = {};
                console.log('Search Results Failed');
            }
        }

        function onQueryFail(sender, args) {
            console.log('Query failed. Error:' + args.get_message());
        }

        function getDataSP() {


            var keywordQuery = new Microsoft.SharePoint.Client.Search.Query.KeywordQuery(context);
            keywordQuery.set_queryText("*");
            keywordQuery.set_sourceId("d0aa2c2e-7709-46f1-835a-244f483e4b0e");

            var managedProperties = ['RefinableString00'];
            var kwqProperties = keywordQuery.get_selectProperties();
            for (var i = 0; i < managedProperties.length; i++) {
                kwqProperties.add(managedProperties[i]);
            }

            var searchExecutor = new Microsoft.SharePoint.Client.Search.Query.SearchExecutor(context);
            results = searchExecutor.executeQuery(keywordQuery);

            context.executeQueryAsync(onQuerySuccess, onQueryFail)

        };



        getDataSP();


        $scope.ProjectSelected = function (proj) {
            $scope.SelectedProj = proj;
        };

    }
    ]);


    angular.bootstrap(document.body, ['FormApp']);

})();
(函数(){
var app=angular.module('FormApp',[]);
app.controller('FormController',['$scope',函数($scope){
var context=SP.ClientContext.get_current();
var user=context.get_web().get_currentUser();
函数onQuerySuccess(){
if(results&&results.m_value&&results.m_value.resultables&&results.m_value.resultables[0]&&results.m_value.resultables[0]){
$scope.SearchResults=results.m_value.resultables[0];
log('返回的搜索结果'+$scope.SearchResults);
}否则{
结果={};
log(“搜索结果失败”);
}
}
函数onQueryFail(发送方,参数){
console.log('查询失败。错误:'+args.get_message());
}
函数getDataSP(){
var keywordQuery=new Microsoft.SharePoint.Client.Search.Query.keywordQuery(上下文);
关键字query.set\u queryText(“*”);
关键字query.set_sourceId(“d0aa2c2e-7709-46f1-835a-244f483e4b0e”);
var managedProperties=['RefinableString00'];
var kwqProperties=keywordQuery.get_selectProperties();
对于(变量i=0;i
您需要通知Angular您更改了模型。通常,当代码被触发或Angular处理回调时,它会自动进行检查,但在本例中,它对回调一无所知。只需在回调结束时调用
$scope.$apply()
,即可完成此操作

更多信息:$scope.$apply()