Javascript AngularJS阵列在视图加载时不加载,但警报/控制台工作
我试图按如下方式将值推入数组,但它显示为空数组。警报起作用。我确信我遗漏了一些明显的东西。有什么线索吗?我已经将代码包括在阵列推送尝试和另一个具有工作警报的代码条目中Javascript AngularJS阵列在视图加载时不加载,但警报/控制台工作,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我试图按如下方式将值推入数组,但它显示为空数组。警报起作用。我确信我遗漏了一些明显的东西。有什么线索吗?我已经将代码包括在阵列推送尝试和另一个具有工作警报的代码条目中 $scope.termsArray = []; execOperation(); function execOperation() { //Current Context var context = SP.ClientContext.get_current();
$scope.termsArray = [];
execOperation();
function execOperation() {
//Current Context
var context = SP.ClientContext.get_current();
//Current Taxonomy Session
var taxSession = SP.Taxonomy.TaxonomySession.getTaxonomySession(context);
//Term Stores
var termStores = taxSession.get_termStores();
//Name of the Term Store from which to get the Terms.
var termStore = termStores.getByName("Taxonomy_111111111111");
//GUID of Term Set from which to get the Terms.
var termSet = termStore.getTermSet("12345-55-689");
var terms = termSet.getAllTerms();
context.load(terms);
context.executeQueryAsync(function () {
var termEnumerator = terms.getEnumerator();
while (termEnumerator.moveNext()) {
var currentTerm = termEnumerator.get_current();
$scope.termsArray.push({
termName: currentTerm.get_name(),
termGUID: currentTerm.get_id(),
termSynonyms: 'Coming Soon'
});
}
}, function (sender, args) {
console.log(args.get_message());
});
}
以下是工作警报的代码:
function execOperation() {
//Current Context
var context = SP.ClientContext.get_current();
//Current Taxonomy Session
var taxSession = SP.Taxonomy.TaxonomySession.getTaxonomySession(context);
//Term Stores
var termStores = taxSession.get_termStores();
//Name of the Term Store from which to get the Terms.
var termStore = termStores.getByName("Taxonomy_111111111111");
//GUID of Term Set from which to get the Terms.
var termSet = termStore.getTermSet("12345-55-689");
var terms = termSet.getAllTerms();
context.load(terms);
context.executeQueryAsync(function () {
var termEnumerator = terms.getEnumerator();
var termList = "Terms: \n";
while (termEnumerator.moveNext()) {
var currentTerm = termEnumerator.get_current();
$scope.termsArray.push({
termName: currentTerm.get_name(),
termGUID: currentTerm.get_id(),
termSynonyms: 'Coming Soon'
});
termList += currentTerm.get_id() + currentTerm.get_name() + "\n";
}
alert(termList);
}, function (sender, args) {
console.log(args.get_message());
});
}
以下是HTML输出:
<div> {{termsArray}}</div>
{{termsArray}
它返回[]
更新:如果我在输入框中单击并退出,或者单击警报并单击“确定”,它将加载阵列,而不是在页面加载时加载。我能够跟踪问题。似乎Angular不支持加载时的非角度函数,因此我需要将$scope数组包装在$scope.apply中。有关详细信息,请参见此处:您尝试在何处显示它?您将工作警报放在哪里了?哪里是
termName:currentTerm。termGUID:currentTerm。术语同义词:“即将到来”
来自哪里?这里缺少一些代码。最后放一个console.log($scope.termsArray)
,让我们看看返回了什么。还有,把这个execOperation()代码>位于函数末尾。看起来像是异步问题。在哪里显示内容?如何确保currentTerm.get_name()和currentTerm.get_id()返回值?它们是返回值。(例如,var termList=“Terms:\n”termList+=currentTerm.get\u id()+currentTerm.get\u name()+“\n”警报(termList);