用两种方法声明ViewModel

时间:2012-11-20 13:26:08

标签: javascript data-binding knockout.js

阅读knockoutJs tutorial并无法使其发挥作用。在第一页上,使用了第一种方法,在第二页上,第二种方法用于创建模型。但第二种方法不起作用。可能是什么问题?

第一种方法

var AppViewModel {
    this.firstName = 'Bob',
    this.lastName = 'Smith'
};

第二种方法

function AppViewModel() {
    this.firstName = 'Bob';
    this.lastName = 'Smith';
}

Html部分如下:

<body>

  <span data-bind="text: firstName"></span>



  <script type="text/javascript">
      ko.applyBindings(AppViewModel);
  </script>
</body>

这适用于第一种方法,但第二种方法会引发错误:

  

未捕获错误:无法解析绑定。消息:ReferenceError:   firstName未定义;绑定值:text:firstName

1 个答案:

答案 0 :(得分:4)

在第一种方法中,您定义了一个对象。在第二种方法中,您定义了一个类的构造函数,因此您必须使用new关键字创建该类的实例:

<body>
  <span data-bind="text: firstName"></span>

  <script type="text/javascript">
      ko.applyBindings(new AppViewModel());
  </script>
</body>