自定义Knockout绑定处理程序不显示绑定
Custom Knockout Binding Handler not showing bindings
这是我的自定义绑定:
ko.bindingHandlers.alert = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {
$(element).attr({ style: "display:none" });
ko.applyBindingsToNode(element, { with: valueAccessor() }, context);
return { controlsDescendantBindings: true };
},
update: function (element, valueAccessor) {
var data = ko.unwrap(valueAccessor());
if (data) {
$(element).attr({ "class": "alert " + ko.unwrap(data.success) });
$(element).show();
}
else
$(element).hide();
}
};
这是我传递给绑定的alert对象:
var alertObj = {
success: "",
image: "",
message: ""
};
var initialDataObj = {
success: "alert-success",
fail: "alert-danger"
};
var Alert = function (initialData) {
var self = this;
self.success = initialData.success;
self.successImage = initialData.successImage;
self.fail = initialData.fail;
self.failImage = initialData.failImage;
self.setAlert = function (success, message) {
var alert = {};
$.extend(alert, alertObj);
alert.success = success ? self.success : self.fail;
alert.image = success ? self.successImage : self.failImage;
alert.message = message;
return alert;
};
}
我是这样设置提醒的:
self.alert(alert.setAlert(true, "Role removed"));
这是我的html:
<div class="alert alert-success" data-bind="alert: $root.alert">
<img data-bind="attr: { src: $root.image }" alt="" width="16" style="float: left;">
<p style="float: left; margin-left: 10px;" data-bind="text: $root.message"></p>
<div style="clear: both;">
</div>
</div>
它目前为警报选择正确的类,但它不显示图片或文本,在某个地方绑定丢失了
通过简单的逻辑$root是不必要的,当你获得访问image
和message
,因为绑定上下文内的警报块是.setAlert
返回的alert
对象
<div class="alert alert-success" data-bind="alert: $root.alert">
<img data-bind="attr: { src: image }" alt="" width="16" style="float: left;">
<p style="float: left; margin-left: 10px;" data-bind="text: message"></p>
<div style="clear: both;"></div>
</div>
肯定会有帮助的
相关文章:
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 使用AngularJs数据绑定的三元运算符显示图像
- 嵌套的foreach绑定未正确显示
- 敲除:可观察数组没有被正确绑定——只有1个结果显示,而api返回6
- 挖空和显示模块模式的数据绑定问题
- 悬停卡未显示在具有绑定的 KNOCKOUTJ 中
- AngularJs的绑定值未显示
- Angularjs-将指令中的值绑定到文档中的任意位置显示/隐藏
- 使用knockoutjs绑定和显示字典
- angularjs绑定赢得'除非我打GET电话,否则不会显示
- 基本角度(绑定未显示)
- 为什么这个简单的ng绑定和ng显示不起作用
- 显示绑定到动态生成的元素的所有事件处理程序
- 角度 ui-select 绑定到一个属性,但向用户显示另一个属性
- 显示带有角度 js 数据绑定表单的引导框
- 显示具有 MVC 数据绑定视图模型 ASP.NET JQuery 对话框的最佳方式
- 如何通过按钮切换文本区域的显示,使用带有 foreach 绑定的挖空
- 挖空 JS为每个绑定显示 [对象对象]
- Angular JS-{{}}不工作,但数据绑定显示作用域
- Angular ng-repeat works..但是没有值被绑定/显示(小枝)