样式绑定不起作用
style binding not working
你知道为什么下面的代码不起作用吗?我有两个ajax调用来从服务器获取数据,以便显示在我的主文件中。我希望UI绑定到我从调用中获得的值。我得到的数据是正确的,但颜色总是黄色和红色,就好像警报和警告是真的,即使它们是假的。此外,attrBinding从未将database属性设置为false,但如果alarmCount或messageCount大于0,则显示正确的值。
这是我的HTML:
<%-- header large --%>
<header id="header_large_container" class="hide-for-medium-down large-10">
<div class="row main_header text-right" id="header_large">
<i class="fi-alert size-21 badge1" data-bind="attr: { databadge: warnings ? warningCount : false }, style: { color: warnings ? 'yellow' : 'white' }"></i>
<i class="fi-x-circle size-21 badge1" data-bind="attr: { databadge: alarms ? alarmCount : false }, style: { color: alarms ? 'red' : 'white'}"></i>
</div>
</header>
<%-- header small, medium --%>
<header id="header_small_container" class="hide-for-large-up fixed">
<div class="row main_header">
<div class="columns small-2">
<a class="left-off-canvas-toggle" href="#"><i class="fi-list"></i></a>
</div>
<div class="small-6 columns" style="padding-top: 15px">
</div>
<i class="fi-alert size-21 badge1" data-bind="attr: { databadge: warnings ? warningCount : false }, style: { color: warnings ? 'yellow' : 'white'}"></i>
<i class="fi-x-circle size-21 badge1" data-bind="attr: { databadge: alarms ? alarmCount : false }, style: { color: alarms ? 'red' : 'white'}"></i>
</div>
</header>
我的JavaScript:
var myViewModel = {
alarmCount: ko.observable(0),
alarms: ko.observable(false),
warningCount: ko.observable(0),
warnings: ko.observable(false),
};
$(document).ready(function () {
$(document).foundation();
ko.applyBindings(myViewModel, document.getElementById('header_large_container'));
ko.applyBindings(myViewModel, document.getElementById('header_small_container'));
})
$.ajax({
async: false,
dataType: "json",
contentType: "application/json; charset=utf-8",
type: "POST",
url: "Default.aspx/GetAlarmCount",
data: {},
success: function (data) {
myViewModel.alarmCount(data.d);
if (data.d > 0) {
myViewModel.alarms(true);
}
else {
myViewModel.alarms(false);
}
return false;
},
error: function (xhr, statusText, error) {
alert("Error on Default.aspx/GetAlarms: " + xhr.responseText);
return false;
}
});
$.ajax({
async: false,
dataType: "json",
contentType: "application/json; charset=utf-8",
type: "POST",
url: "Default.aspx/GetWarningCount",
data: {},
success: function (data) {
myViewModel.warningCount(data.d);
if (data.d > 0) {
myViewModel.warnings(true);
}
else {
myViewModel.warnings(false);
}
return false;
},
error: function (xhr, statusText, error) {
alert("Error on Default.aspx/GetAlarms: " + xhr.responseText);
return false;
}
});
只是缺少一些()
来打开(读取)if/else逻辑中的可观察属性:
代替:
databadge: warnings ? warningCount : false
用途:
databadge: warnings() ? warningCount() : false
如果您在绑定(data-bind="{text: someObservable}"
)中单独使用可观察的值,则敲除会静默地为您打开someObservable
的值。你可以使用data-bind="{text: someObservable()}"
,但你不必。
但是,如果使用计算表达式,则敲除不能再为您执行此操作,并且您必须自己打开所有值:data-bind="{text: someObservable() + '!'}"
。
相关文章:
- 淘汰赛.JS'启用'长度绑定条件不起作用
- 对象文字方法上的Javascript绑定不起作用
- 自定义控件中的双向绑定在SAPUI5中不起作用
- Knockout输入绑定不起作用
- $http中的Angular 1数据绑定承诺不起作用
- 对于使用传递的数据计算的局部范围变量,角度绑定在自定义指令中不起作用
- 角度指令双向绑定不起作用
- 指令中选择输入的双向绑定不起作用
- Angularjs:ui路由嵌套状态下的绑定不起作用
- Jquery事件绑定获胜'当作为方法调用时不起作用,但当直接在控制台中调用时会起作用
- 为什么我的淘汰选项绑定不起作用
- jQuery Ajax 元素的后期绑定不起作用
- colorbox与元素实时绑定'分组获胜'不起作用
- 样式绑定不起作用
- 在内联编辑的情况下,Knockout绑定不起作用
- 敲除数据绑定=“;html:html,内部html点击事件不起作用
- 当元素在事件绑定后附加到DOM时,触摸事件不起作用
- Javascript敲除绑定嵌套对象不起作用
- Aurelia反复绑定.因为不起作用
- 为什么我的数据绑定到一个计算函数不起作用(使用knockout.js和jade)