如何使用Knockoutjs在JavaScript对象中显示属性?

时间:2014-06-10 16:42:27

标签: javascript html mvvm knockout.js

我是Knockoutjs和JavaScript的新手,需要一些建议。

在我的HTML(查看)页面中,我试图从我的Javascript对象(模型)中显示一个文本属性,它看起来像:

var object = function() {
   this.text = "blah blah blah";
}

在我的对象的ViewModel中,我有:

var objectViewModel= function (object) {
   var content = ko.observable(object); // or is it object.text() ?

   self.section = function() {
      return content.text; //or is it content ?
   }
}

在我看来,我有这个:

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

我的主要问题是如何通过viewmodel让HTML显示模型的属性(文本)?我在其他问题中发表了评论,并希望得到一些帮助。

提前致谢!

1 个答案:

答案 0 :(得分:0)

所以我建议this post作为一个好的阅读。

要回答其他两个评论问题:这完全取决于您作为参数传递的内容。当你实例化你遗漏的viewmodel时,会提供那么重要的信息。

根据规定,您需要ko.applyBindings(new objectViewModel(new object()))。 其次,你有self,它来自哪里?设为this或声明var self = this;或提供该变量来自的其余代码。

接下来,在section函数中,您需要“阅读”您的内容可观察内容:

return content().text

最后,在您的视图中,您需要执行section

<span data-bind="text:section()"></span>

作为额外的考虑因素,您可以使section成为computed observable,并依赖于content

this.section = ko.computed(function() {
  return content().text;
})

删除了在视图中执行的需要。查看this fiddle,其中描述了两种不同的情景。