无法将项添加到observableArray
Cannot add item to observableArray
这应该是一个很琐碎的问题,但它让我抓狂!我不喜欢教程的第1步,但我不能用它。。。。这就是我的代码:
/* Model definition */
var PrivateSalesMenuModel = function () {
var self = this;
this.privateSales = ko.observableArray();
this.addPrivateSale = function (privateSale) {
var newPs = new PrivateSaleMenuItem(privateSale);
self.privateSales.push(newPs);
};
};
var PrivateSaleMenuItem = function (ps) {
this.title = ps.Description;
this.hasActual = ps.HasActual;
this.hasSale = ps.HasSale;
this.listaId = ps.ListaId;
this.isSelected = false;
};
/* end model definition*/
var privateSalesMenuModel = new PrivateSalesMenuModel();
ko.applyBindings(privateSalesMenuModel);
很简单。。。我有一个表示我的模型的对象,它是其他对象的集合,称为PrivateSaleMenuItem
。问题是addPrivateSale
没有按预期工作。在代码的某个地方我做
privateSalesMenuModel.addPrivateSale(ps);
其中ps是由其他JavaScript函数创建的对象。。。anyway正是我在PrivateSalesMenuItem的构造函数中需要的对象,所以它的一致性不是问题。问题似乎是self.privateSales.push(newPs);
不起作用。。。在该阳离子之后,privateSalesMenuModel.privateSales
的数目仍然为0。为什么?
已编辑
我在jsFiddle中用同样的代码举了一个例子,它运行得很好,所以我怀疑我的页面中有什么东西让observableArray的推送方法停止了工作。。。我怎样才能知道它是什么?
操作。。。jsfiddle的链接http://jsfiddle.net/YBHf5/
看起来你在代码中混合了this和self:
var PrivateSalesMenuModel = function () {
var self = this;
this.privateSales = ko.observableArray();
this.addPrivateSale = function (privateSale) {
var newPs = new PrivateSaleMenuItem(privateSale);
self.privateSales.push(newPs);
};
};
将它们更改为所有使用自我修复程序,如下所示:
var PrivateSalesMenuModel = function () {
var self = this;
self.privateSales = ko.observableArray();
self.addPrivateSale = function (privateSale) {
var newPs = new PrivateSaleMenuItem(privateSale);
self.privateSales.push(newPs);
};
};
请看这里的工作小提琴:
http://jsfiddle.net/YBHf5/1/
问题已解决。。。。这是一个小问题,有一个小解决方案:我只需要在页面末尾推送外部脚本声明。我把这个脚本(其中有关于这个问题的代码)放在页面的顶部,放在正文中,但最重要的是。只要把脚本引用放在正文的末尾,一切都会再次按预期进行。很抱歉浪费了你的时间。。。但是这个小问题很难找到,因为在调试时根本不清楚原因
- observablearray KnockoutJs中的对象
- Filtering observableArray
- 过滤observableArray时出现问题
- 检测observableArray是否发生变化
- UI中未更新Knockout ObservableArray
- 自定义过滤淘汰js observableArray
- KNOCKOUT js observableArray 不起作用
- ko observablearray:推送和直接分配之间的区别
- 嵌套的JSON数组和Knockout observableArray
- 无法将项添加到observableArray
- KNOCKOUT ko.observableArray 不会刷新视图
- 在Knockoutjs中设置计算对象的observableArray的更好方法
- 访问observableArray中的非对象
- ObservableArray.push()触发点击事件
- 将JSON映射到observableArray时出错
- Knockoutjs计算未从observableArray更新
- observableArray is not defined
- 可以't get return Array插入到knockoutjs observableArray中
- 从knockoutJS中的observableArray中删除Self
- 用新数据替换observableArray