在AngularJS中,如何将多个下拉列表和文本控件绑定在一起
In AngularJS how do I bind multiple controls together for dropdowns and text?
我所做的是使用一个预先存在的HTML模板,我正在浏览它上的所有元素,将其转换为AngularJS,只是为了学习目的和最佳实践。
我有一个部分供用户更改其状态(联机、外出、忙碌)。HTML如下所示:
<div class="sidebar-right-header" data-ng-controller="SidebarRightController">
<div class="pull-right posr" dropdown>
<a href class="dropdown-toggle">
<i class="fa fa-circle fs8" data-ng-class="{
'text-green2': userStatus.online,
'text-red2': userStatus.busy,
'text-orange2': userStatus.away}">
</i> <span class="caret text-muted"></span>
</a>
<ul class="dropdown-menu dropdown-sm" role="menu">
<li class="menu-arrow">
<div class="menu-arrow-up"></div>
</li>
<li data-ng-click="SwitchStatus('Online')"><a href="javascript:void(0);"><i class="fa fa-circle text-green2 pr5"></i> Online</a></li>
<li data-ng-click="SwitchStatus('Busy')"><a href="javascript:void(0);"><i class="fa fa-circle text-red2 pr5"></i> Busy</a></li>
<li class="divider"></li>
<li data-ng-click="SwitchStatus('Away')"><a href="javascript:void(0);"><i class="fa fa-circle text-orange2 pr5"></i> Away</a></li>
</ul>
</div>
<div class="media mtn"> <a class="pull-left mt5" href="#"> <img class="thumbnail thumbnail-sm rounded" src="img/avatars/2.jpg" alt="..."> </a>
<div class="media-body">
<h5 class="small mt5 mbn text-cloud"><b>Current Status:</b></h5>
<h5 class="small text-white"><b>{{statusText}}</b></h5>
</div>
</div>
</div>
我问了另一个让我开始的问题,即使用ngClass指令来处理状态。您可以在上面示例的顶部看到它。我创建了一个与下拉选择关联的函数,名为SwitchStatus()。最后一个问题是{{statusText}},因为我不知道如何正确绑定它。我的意思是,我可以。。。但我的控制器变得笨重,我只知道我做事情的效率很低。
这是我的控制器:
function($scope) {
var userStatuses = {
online: true,
busy: false,
away: false
};
$scope.statusText = GetStatusText();
function GetStatusText() {
var text;
switch(userStatuses) {
case userStatuses.busy === true:
text = "I'm busy...";
break;
case userStatuses.away === true:
text = "I'm away...";
break;
default:
text = "I'm online!";
}
return text;
}
$scope.SwitchStatus = function(option) {
console.log(option);
if ( option === 'Online' ) {
userStatuses.online = true;
} else if ( option === 'Busy' ) {
userStatuses.busy = true;
userStatuses.online = false;
userStatuses.away = false;
} else if ( option === 'Away' ) {
userStatuses.online = false;
userStatuses.busy = false;
userStatuses.away = true;
}
};
$scope.userStatus = userStatuses; // default online
}
最后(当我弄清楚自己在做什么时),我想把高级逻辑与这些选择联系起来,所以我想确保我的控制器的结构能够在以后轻松处理。
结论:试图获得与用户状态的流畅绑定,包括状态文本和表示绿点的类。你可以看到字体真棒"fa fa circle"等。现在,当切换状态时,ngClass部分工作,但状态文本不工作。
希望我不是在问一个愚蠢的问题:)
statusText
只设置过一次:$scope.statusText = GetStatusText();
之后没有任何更新,所以它在UI中永远不会更改。
有很多方法可以更新它,但有一种方法是在SwitchStatus
函数的末尾设置它。
$scope.SwitchStatus = function(option) {
console.log(option);
if ( option === 'Online' ) {
userStatuses.online = true;
} else if ( option === 'Busy' ) {
userStatuses.busy = true;
userStatuses.online = false;
userStatuses.away = false;
} else if ( option === 'Away' ) {
userStatuses.online = false;
userStatuses.busy = false;
userStatuses.away = true;
}
$scope.statusText = GetStatusText();
};
这可能会/应该清理一些,但这能完成任务。
相关文章:
- 如何在从多选下拉列表中选择选项值时动态生成文本框
- 如何在剑道下拉列表中按文本和值搜索
- 如何在ReactJs中链接下拉列表和文本区域
- 使用 jQuery 从下拉列表中获取所选文本
- 根据用户从下拉列表中的选择显示多个文本框
- 使用两个下拉列表的值填充文本框
- 如果没有从下拉列表中选择任何值,则允许使用php、mysql、javascript将文本框添加到mysql表中
- 将文本框/单选按钮/和下拉列表中的信息添加到dataTable
- angularjs文本区域-如何使其与angularjs下拉列表中的选定值保持同步
- 如何删除下拉列表中的部分文本
- 将数量文本框转换为下拉列表
- 从下拉列表中选择其他选项时激活文本框
- 禁用基于下拉列表选择 asp.net JavaScript 启用文本框
- 根据下拉列表中的选定值启用文本框
- 有角度的自动建议文本排版和html ul li下拉列表
- 将Wooccommerce属性下拉列表转换为可点击文本
- 如何在选择下拉列表值的文本框中获取值
- 从淘汰下拉列表中获取文本值
- 如何使用文本下拉列表中的绑定值来执行计算
- 使用模板时,我如何以编程方式设置剑道下拉列表文本