TypeError:ko.observable数组不是函数

时间:2017-03-21 00:48:34

标签: javascript jquery html knockout.js

我无法在我的网站上使用Knockout。当我尝试加载页面时,我的浏览器会给我一个TypeError: ko.observablearray is not a function

我不确定我在这里做错了什么,这是否意味着我的带有淘汰赛的JS文件没有加载,或者我的代码格式是否有问题?

这是我第一次尝试使用淘汰赛,而Javascript一般如此,如果这是一个简单的问题请耐心等待。

这是我的app.js文件的一个片段,其中引发了错误:

// --- View Model.
function AppViewModel() {

  // Setting This
  var self = this

  // Declaring Observables
  this.locationInput = ko.observable("");

  this.locationList = ko.observablearray([]);

以下是我加载脚本的方法:

  <script src="./js/knockout.js"></script>
  <script src="./js/jquery.min.js"></script>
  <script src="./js/app.js"></script>

我没有得到什么?我对Python更熟悉,这个错误在我看来就像我没有导入模块一样,如果我使用python。我不知道这是必要的Javascript;我是否需要声明才能使用Knockout?再次感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

observableArray

需要大写字母A.
var myObservableArray = ko.observableArray();    // Initially an empty array
myObservableArray.push('Some value');            // Adds the value and notifies observers

http://knockoutjs.com/documentation/observableArrays.html

如果你已经使用了

var self = this;

以下声明可直接引用self

// Declaring Observables
self.locationInput = ko.observable("");
self.locationList = ko.observablearray([]);

当您想在函数或计算对象中使用上述对象时,这将非常有用。它将有助于指出正确的参考。例如:

self.getLocation = function(data, event){
  return ko.utils.arrayFirst(self.locationList(), function(location) {
        return location.toLowerCase() === data.toLowerCase();
    });
};