- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在绑定(bind)到单击事件的 View 模型方法之一中应用绑定(bind)。当我第二次单击时,再次完成绑定(bind), View 模型数据无法显示在 View 中。我可以有一个条件来检查 div 是否已经绑定(bind)到 View 模型?
Here is My Jsfiddle
var VM;
$(document).ready(function () {
VM = new MainViewModel();
ko.applyBindings(VM,document.getElementById("familyDiv"));
FetchProductFamiliesForProductsKO();
});
function FetchProductFamiliesForProductsKO() {
var data=[{family: 'family1'},{family:'family2'},{family:'family3'}];
for (var i = 0; i < data.length; i = i + 1) {
var fam = data[i].family;
//console.log(fam);
VM.AddProducts(fam, null, fam);
}
};
ProductMenu= function(name, subProductsMenu1, selectedMenu) {
var self= this;
self.productname = ko.observable(name);
self.submenu = ko.observableArray([]);
self.selectedProductName = ko.observable();
};
ProductSubMenu=function() {
var self = this;
self.submenuName = ko.observable();
self.submenu2 = ko.observableArray([]);
self.selectedSubMenuName = ko.observable();
};
ProductSubMenu2= function() {
var self = this;
self.submenu2Name = ko.observable();
self.properties = ko.observableArray([]);
self.selectedSubMenu2Name = ko.observable();
};
Properties= function() {
var self = this;
self.pName = ko.observable();
self.shortDesc = ko.observable();
self.longDesc = ko.observable();
self.additionalDocs = ko.observableArray([]);
};
AdditionalDocument = function () {
var self = this;
self.docName = ko.observable();
self.index = ko.observable();
};
function MainViewModel() {
var self= this;
self.productModel = new ProductMenu();
self.subMenuModel = new ProductSubMenu();
self.submenu2Model = new ProductSubMenu2();
self.propertyModel = new Properties();
self.AllProductsModel = ko.observableArray([]);
//if true- show family products, hide sub family products
self.ReturnToFamilyProduct = ko.observable(true);
self.ShowSubMenu = ko.observable(false);
self.showSubMenu2 = ko.observable(false);
self.ShowBackBtnOnSubMenuClick = ko.observable(false);
self.IfDocumentsPresent = ko.observable(true);
//to add product to products array
self.AddProducts = function (name, subProductsMenu1, selectedMenu) {
this.AllProductsModel.push(new ProductMenu(name, subProductsMenu1, selectedMenu));
};
self.GetSubFamilyForProducts = function (data, event) {
this.ShowSubMenu = ko.observable(true);
SubProductMenus1 = [];
var currentElement = data;
$('#subFamilyDiv').show();
$('#btnBackToFamily').html("back: "+currentElement.productname());
self.productModel = new ProductMenu();
self.productModel.productname = ko.observable(currentElement.productname());
self.selectedProductName = ko.observable(currentElement.productname());
var data=[{subFamily: 'subFamily1'},{subFamily:'subFamily2'},{subFamily:'subFamily3'}];
$(data).each(function (index, subFamily) {
var tt= data[index].subFamily;
var temp = new ProductSubMenu();
//console.log("subfamily:"+ tt);
temp.submenuName = tt;
SubProductMenus1.push(temp);
});
self.showSubMenu2= true;
self.productModel.submenu = ko.observable(SubProductMenus1);
ko.applyBindings(VM.productModel, document.getElementById("subFamilyAccProduct"));
};
self.fetchProductItemsForProduct = function (famName, data, event) {
var SubProductMenus2 = [];
self.subMenuModel = new ProductSubMenu();
self.subMenuModel.submenuName = famName.submenuName;
self.subMenuModel.selectedSubMenuName = famName.submenuName;
self.ShowSubMenu = true;
self.showSubMenu2 = true;
var productItems=[{shortDesc:'subProd1'},{shortDesc: 'subProd2'}, {shortDesc: 'subProd3'}];
$(productItems).each(function (index, value) {
//console.log("short Desc: "+ productItems[index].shortDesc);
var temp2= productItems[index].shortDesc;
var temp = new ProductSubMenu2();
temp.submenu2Name = temp2;
self.subMenuModel.submenu2.push(temp);
SubProductMenus2.push(temp);
});
//console.log("item coount: "+ self.subMenuModel.submenu2.length);
ko.applyBindings(VM.subMenuModel, document.getElementById("ProductItemsForProd"));
};
self.ShowProductInfoBrowse = function (subFamily, item) {
//console.log("sub family name is :" + subFamily + ", "+ item);
var familyname = VM.productModel.selectedProductName();
self.submenu2Model = new ProductSubMenu2();
self.submenu2Model.submenu2Name = item;
self.submenu2Model.selectedSubMenu2Name = item;
additionalD=[];
var temp = new AdditionalDocument();
temp.docName = "PDF document";
additionalD.push(temp);
var temp2 = new AdditionalDocument();
temp2.docName = "test document";
additionalD.push(temp2);
console.log("doc count; "+ additionalD.length);
self.propertyModel = new Properties();
self.propertyModel.pName = ko.observable("Product Testing");
self.propertyModel.shortDesc = ko.observable("short Description");
self.propertyModel.longDesc = ko.observable("long Description");
self.propertyModel.additionalDocs= ko.observable(additionalD);
ko.applyBindings(VM.propertyModel, document.getElementById("ProductDetailsDiv"));
};
}
最佳答案
要确定 View 模型是否已经绑定(bind)到特定节点,您可以使用
ko.dataFor(yourNode)
click:function(data, event){ $('#subFamilyDiv').show(); $('#familyDiv').hide(); $root.GetSubFamilyForProducts(data, event); }
ko.applyBindings(VM.propertyModel, document.getElementById("ProductDetailsDiv"));
关于knockout.js - 如何检查 <div> 是否已经绑定(bind)到 viewModel? - knockout .js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17824196/
我不知道该怎么做... function f1() { var x = 10; function f2(fx) { var x; x = 6;
早期绑定(bind)和后期绑定(bind)有什么区别? 最佳答案 简短的回答是,早期(或静态)绑定(bind)是指编译时绑定(bind),后期(或动态)绑定(bind)是指运行时绑定(bind)(例如
如何在 SwiftUI View 上使用 Binding(get: { }, set: { }) 自定义绑定(bind)与 @Binding 属性。我已成功使用此自定义绑定(bind)与 @State
我经常发现自己遇到问题,即控件的两个(相关)值被更新,并且两者都会触发昂贵的操作,或者控件可能会暂时处于不一致的状态。 例如,考虑一个数据绑定(bind),其中两个值 (x,y) 相互减去,最终结果用
我想通过我的 ViewModel 控制我的一个窗口的高度和宽度。 这看起来很简单。 但没有。它不起作用。 它检查 ViewModel 的 Width但不是 Height . 奇怪的是,如果我切换 W
UI5中一次性绑定(bind)和单向绑定(bind)有什么区别? 是否有任何用户特定的用例我会使用它们? 我无法从文档中获得太多信息。 最佳答案 单程 它的作用:单向数据流。模型数据的变化(例如通过
(define make (lambda (x) (lambda (y) (cons x (list y))))) (let ((x 7) (p (make 4))) (cons
尽管我或多或少地了解什么是语言绑定(bind),但我很难理解它们是如何工作的。 例如,谁能解释一下如何为 WinAPI 制作 Java 绑定(bind)? 最佳答案 如果您搜索 Foreign Fun
谁能解释为什么我可以重新绑定(bind)列表但不能+? (binding [list vector] (list 1 3)) (binding [list +] (list 1 3)) (bi
我真的很喜欢 Caliburn 和命名约定绑定(bind),我很惊讶 可见性与“CanNAME”约定用于保护 Action 的方式不同。 据我所知, BooleanToVisibilityConver
我了解动态绑定(bind)的实现方式以及静态绑定(bind)和动态绑定(bind)之间的区别,但我只是无法理解动态绑定(bind)的定义。基本上它是一种运行时绑定(bind)类型。 最佳答案 基本上,
http://jsfiddle.net/3NRsd/ var foo = $("div").bind("click", function() { $("div").animate({"hei
这个问题我快疯了...我有一个用户控件,它有一个用于插入操作的 FormView 和一个用于所有其他操作的 GridView。 在这两个控件中,我都有一个 DropDownList,如下所示: '
我有一个绑定(bind)到 ListBox 的地址的 ObservableCollection。然后在 ItemTemplate 中,我使用 {Binding .} 绑定(bind)到当前地址记录。这
如果我有以下简单的 js/knockout 代码: .js( View 模型): var image = ko.observable('http://placehold.it/300x150'); 看
我正在 aurelia 上开发一个自定义属性,让用户在输入文本区域时从列表中进行选择。例如,用法将是这样的: 正如您可能注意到的,auto-complete是属性。现在,当我想显示提示时,我想在自定
我正在使用 EventEmitter2作为我的应用程序内部的消息总线。现在我需要绑定(bind)和取消绑定(bind)一些事件处理程序。因为我也希望他们bind将它们添加到给定的上下文中,我最终得到以
我有以下函数调用: $(".selector").on("click", callback.bind(this, param1, param2)); 在我的回调函数中,我想使用绑定(bind)的 th
我目前正在试验新的编译绑定(bind),并且(再次)达到了我在拼图中遗漏了一个小问题:为什么我必须调用 Bindings.Update?直到现在,我还认为实现 INotifyPropertyChang
我正在阅读一本关于编写 JavaScript 框架的书,并找到了这段代码。但是我不明白它是如何工作的,尤其是 bind.bind 的用法?有人知道吗? var bind = Function.prot
我是一名优秀的程序员,十分优秀!