加载时不显示角度数据
加载时未显示的ng-binding使用范围内的数组中的数据。
该数组从另一个数组获取数据(我们称它们为A)。
的NG结合这是已经装上显示从阵列A.使用数据
这里有几种方法,以显示其很奇怪的数据:
- 重点则不能集中任何的输入
- 更改的任何输入
加载时不显示角度数据
你可以尝试错误here值。
在这里,我提供我的一些代码片段:
<div class="container-fluid " id="mainApp">
<div class="container" ng-repeat='content in fetchedData'>
<h4>{{content[1]}}</h4>
<div class="row" ng-repeat='data in content[2]'>
<p class="pull-left">{{data[0]}}<p>
<input data-toggle='tooltip' title ='{{data[1]}} hours per page' ng-model='data[2]' type='number' min=0 class='form-control numberInput pull-right'>
</div>
</div>
<div class="container">
<h4>{{languageData[0]}}</h4>
<div class="row" >
<p class="pull-left">{{languageData[1][0][0]}}<p>
<input data-toggle='tooltip' title ='{{languageData[1][0][1]}} hours per page' ng-model='languageData[1][0][2]' type='number' min=0 class='form-control numberInput pull-right'>
</div>
</div>
</div>
JS的用于提取的用于languageData
代码文件:
$scope.getLangData = function(){
var langData = [];
var langPanel = Parse.Object.extend("Panel");
var langpanelObject = new Parse.Query(langPanel);
langpanelObject.equalTo('editable',false);
langpanelObject.find({
success:function(results)
{
for (var i = 0; i < results.length; i++) {
langData.push(results[i].get("title"),[],results[i].id);
};
for (var i = 0; i < $scope.fetchedRows.length; i++) {
if ($scope.fetchedRows[i][3]== langData[2]) {
langData[1].push($scope.fetchedRows[i]);
}
};
},
error:function(error)
{
alert("Error: "+ error.code + " " +error.message);
}
});
$scope.languageData = langData;
$scope.$apply();
}
我想这是导致该错误的js代码因为我有一个按钮,那就点击getLangData()函数(这是网站上的Reset
按钮),并且数据再次消失。但是,我不知道如何以及为什么它会影响ng绑定的可见性。
$scope.$apply()
正在解析异步调用之前运行。
由于解析库是出了角度线,你必须运行$apply
的范围,但正确的方法是这样的:
langpanelObject.find({
success: function(results) {
for (var i = 0; i < results.length; i++) {
langData.push(results[i].get("title"),[],results[i].id);
};
for (var i = 0; i < $scope.fetchedRows.length; i++) {
if ($scope.fetchedRows[i][3]== langData[2]) {
langData[1].push($scope.fetchedRows[i]);
}
};
$scope.$apply(function() {
$scope.languageData = langData;
});
},
error: function(error) {
alert("Error: "+ error.code + " " +error.message);
}
});
这是一个很好的做法是使用$apply
传递功能一个参数,而不仅仅是$scope.$apply()
。
感谢您的回答。 是'$ scope。$ apply(...)'还是'$ scope.apply()'? –
这是'$ scope。$ apply(...)',对不起,这是一个错字,我要解决这个问题。 – jjimenez
问题是因为Javascript执行范围。$ apply()在我的languageData被更新之前。 解决方法是通过setTimeOut()延迟$ apply()函数。
setTimeout(function(){ $scope.$apply();}, 500);
仅仅推迟一些代码是不合理的。请看我的解决方案。 – jjimenez
为什么'$ scope。$ apply();'它在控制台中抛出错误。你不需要使用'$ scope。$ apply();''因为范围在控制器中被自动消化 –
我使用它,因为在获取数据之前加载了绑定到html的ng。因此,在可以显示数据后,我认为我应该使用$ apply,以便更新绑定。 你有什么错误?我从控制台没有错误。我试图删除代码中的应用,但问题仍然存在。 –