【发布时间】:2017-09-10 02:03:38
【问题描述】:
在 beforeAppear 中调用 widget.Test() 时,我收到 Uncaught TypeError: Cannot read property 'target' of undefined。
define(
//-------------------------------------------------------------------
// DEPENDENCIES
//-------------------------------------------------------------------
['knockout'],
// -------------------------------------------------------------------
// MODULE DEFINITION
// -------------------------------------------------------------------
function (ko) {
"use strict";
return {
First_Arr: ko.observableArray(['arrayItem0', 'arrayItem1', 'arrayItem2', 'arrayItem3']),
Second_Arr: ko.observableArray(['arrayItem0', 'arrayItem1', 'arrayItem2']),
Test: function(widget, event) {
var element = event.target;
var pathname = location.pathname;
var anotherArray = [
["/some-url-path", widget.First_Arr()],
["/some-other-url-path", widget.Second_Arr()]
];
for (var i = 0; i < anotherArray.length; i++) {
// Do some stuff and console.log the array items
}
},
beforeAppear: function(page) {
var widget = this;
widget.Test();
}
}
}
);
奇怪的是,例如,如果我在视图中创建一个按钮:
<button id="btn-click" data-bind="click: Test">test</button>
然后单击它,然后我得到了预期的结果,即按预期将数组的内容打印到控制台。
PS。我尝试注释掉 var element = event.target; 行,因为我认为这是问题的根源,但这只是产生了以下内容:Uncaught TypeError: Cannot read property 'First_Arr() ' 的未定义。
对这个有点不知所措。任何帮助都会有所帮助。
【问题讨论】:
-
此问题是否已解决,或者您仍然无法正常工作?
标签: javascript arrays mvvm knockout.js