角色新手,很难理解这个功能。 这是一个聊天模拟器,其中有一个文本框,一个按钮和一个显示框。 用户在文本框中输入一个值,按下按钮,然后在显示框中反映出来。
除了显示用户输入的文本外,还有一个使用用户输入值的数据检索过程。
用户输入值后,我想禁用文本框,直到检索到数据然后再次启用它。
但是使用此代码,用户输入的文本仍显示在显示中,同时正在检索数据。
首先应如何设计此代码。 的 HTML:
<textarea ng-model="userInput"></textarea>
<a href="javascript:;" ng-click="GetNextItem()">Send</a>
JS:
$scope.EnableUserInput = true;
$scope.GetNextItem = function (){
if($scope.EnableUserInput){
//show user entered in display box
$scope.ChatHistory.push({
UserText: $scope.userInput,
});
$scope.userInput = "";
}
}
$scope.GetData()=function(id){
DataFactory.GetData(id)
.success(function (data, status) {
$scope.EnableUserInput = false;
$timeout(function () {
$scope.ChatHistory.push((JSON.parse(data)));
}, 2000);
$scope.EnableUserInput = true;
})
}
修改 如果上面的例子令人困惑,这里更简单。
$scope.MainFunction = function(){
$scope.GetDataUsingFactory(){
var promise = DataFactory.GetData();
promise.then(){
alert(2);
$scope.common();
})
}
//some more factory functions
alert(1);
$scope.common = function(){
//common code to execute after all the FactoryFunctions are done getting data
}
}
我想要发生的是先提醒警报(2)然后警告(1)&amp; $ scope.common()。但这完全是另一种方式。
使用角度1.2.28
答案 0 :(得分:1)
如果要禁用textarea,可以添加ng-disabled
指令,如
<textarea ng-model="userInput" ng-disabled="!EnableUserInput"></textarea>
由于您将userInput
绑定到textarea,因此在模型更改之前,textarea不会刷新。
样品
$scope.common = function(){
//some more factory functions
alert(1);
//common code to execute after all the FactoryFunctions are done getting data
}
$scope.MainFunction = function(){
$scope.GetDataUsingFactory(){
var promise = DataFactory.GetData();
promise.then(){
alert(2);
$scope.common();
})
}
alert(3);
}
然后序列为alert(3), alert(2), alert(1), common code