Javascript observableArray未定义
我在客户开发环境中工作,必须遵守他们的编码标准。我有下面的JS和HTML。我的耳环没有定义。我不能让它工作。甚至console.log也在打印正确的值 请不要担心Javascript observableArray未定义,javascript,jquery,html,knockout.js,Javascript,Jquery,Html,Knockout.js,我在客户开发环境中工作,必须遵守他们的编码标准。我有下面的JS和HTML。我的耳环没有定义。我不能让它工作。甚至console.log也在打印正确的值 请不要担心ko.applyBindings。它被处理好了 我的JS代码: define( ['knockout'], function (ko) { "use strict"; return { onLoad: function (widget) {
ko.applyBindings
。它被处理好了
我的JS代码:
define(
['knockout'],
function (ko) {
"use strict";
return {
onLoad: function (widget) {
widget.getDetails= function (prod) {
var abc = prod.DetailsNumbers();
console.log(abc);
var someArray= [];
someArray= abc.split(',');
//console.log(someArray);
var anotherObservableArray = ko.observableArray();
for (var i = 0; i < someArray.length; i++) {
var temp = {
"prodName": ko.observable(someArray[i])
};
anotherObservableArray.push(temp);
}
console.log(anotherObservableArray());
};
}
}
}
);
定义(
[“击倒”],
职能(ko){
“严格使用”;
返回{
onLoad:函数(小部件){
widget.getDetails=函数(prod){
var abc=prod.DetailsNumbers();
控制台日志(abc);
var someArray=[];
someArray=abc.split(',');
//log(someArray);
var anotherobservearray=ko.observearray();
for(var i=0;i
我的HTML代码:
<div id="someId">
<table>
<tbody>
<tr>
<td>Button Here</td>
<td><button data-bind="click: getDetails(product())">Click me</button></td>
</tr>// this here is working fine
</tbody>
</table>
<ul data-bind="foreach: anotherObservableArray"> // this doesnt work
<li>
<span data-bind="text: prodName"> </span>
</li>
</ul>
</div>
按钮在这里
点击我
//这个很好用
//这不起作用
-
未定义另一个ObservableArray
Move
var anotherobservearray=ko.observearray()代码>到您的VM定义,并确保它是公开的(即“公共的”)。我想象你有这样的东西:
var vm = {
// ...
// most likely you are exposing getDetails() already
// ....
anotherObservableArray: ko.observableArray()
};
// ...
ko.applyBindings(vm);
Movevar anotherobservearray=ko.observearray()代码>到您的VM定义,并确保它是公开的(即“公共的”)。我想象你有这样的东西:
var vm = {
// ...
// most likely you are exposing getDetails() already
// ....
anotherObservableArray: ko.observableArray()
};
// ...
ko.applyBindings(vm);
您不能在声明它的函数范围之外公开另一个ObservableArray。基本上,您的代码采用以下格式:
{
onLoad: function (widget) {
widget.getDetails = function (prod) {
var anotherObservableArray = ko.observableArray();
// push some items into the array
console.log(anotherObservableArray());
};
}
}
您需要以某种方式将另一个ObservableArray
暴露在函数之外。例如:
{
onLoad: function (widget) {
widget.getDetails = function (prod) {
var anotherObservableArray = ko.observableArray();
// push some items into the array
console.log(anotherObservableArray());
this.anotherObservableArray = anotherObservableArray; // Expose it on the function
};
}
}
您不能在声明它的函数范围之外公开另一个ObservableArray。基本上,您的代码采用以下格式:
{
onLoad: function (widget) {
widget.getDetails = function (prod) {
var anotherObservableArray = ko.observableArray();
// push some items into the array
console.log(anotherObservableArray());
};
}
}
您需要以某种方式将另一个ObservableArray
暴露在函数之外。例如:
{
onLoad: function (widget) {
widget.getDetails = function (prod) {
var anotherObservableArray = ko.observableArray();
// push some items into the array
console.log(anotherObservableArray());
this.anotherObservableArray = anotherObservableArray; // Expose it on the function
};
}
}
@用户3297291,已经处理好了。我注意到你添加了它,所以我删除了我的评论。您的问题并没有真正弄清楚HTML的绑定上下文是什么getDetails
创建一个名为anotherObservableArray
的可观察数组,但它只存在于该方法的作用域内。@user3297291如何使其成为一个全局作用域数组?您的单击处理程序是否已经工作了?如果是,则意味着您当前的绑定上下文是widget
。如果要使其全局化,它必须位于您在applyBindings
中使用的视图模型中。然后,您可以通过foreach
绑定中的$root.anotherObservableArray
访问它。您还必须重写getDetails
方法。也许可以阅读更多关于MVVM和knockout的最佳实践。这有帮助吗?是的,单击处理程序工作正常。如何修改代码使其成为全局范围?你展示的例子或东西?@user3297291,已经处理好了。我注意到你添加了它,所以我删除了我的评论。您的问题并没有真正弄清楚HTML的绑定上下文是什么getDetails
创建一个名为anotherObservableArray
的可观察数组,但它只存在于该方法的作用域内。@user3297291如何使其成为一个全局作用域数组?您的单击处理程序是否已经工作了?如果是,则意味着您当前的绑定上下文是widget
。如果要使其全局化,它必须位于您在applyBindings
中使用的视图模型中。然后,您可以通过foreach
绑定中的$root.anotherObservableArray
访问它。您还必须重写getDetails
方法。也许可以阅读更多关于MVVM和knockout的最佳实践。这有帮助吗?是的,单击处理程序工作正常。如何修改代码使其成为全局范围?一个例子或你展示的东西?解决了这个问题…但是我面临一个新的问题。看这里,修复了这个问题…但是我面临一个新问题。看这里