Javascript 将异步REST调用JSON添加到Angular$scope
我需要一些帮助来理解如何构造AngularJS控制器 控制器将执行对SharePoint的异步REST调用,并将JSON结果放入$scope.SearchResults属性中 异步REST调用由getDataSP()函数执行,$scope.SearchResults在onQuerySuccess()回调中赋值。onQuerySuccess()方法包含以下语句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) 它确实显示了预期
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()