【问题标题】:knockout component parameter handling敲除组件参数处理
【发布时间】:2015-02-25 19:00:09
【问题描述】:

我似乎不明白以下内容:

我有一个使用敲除组件的 html 页面,请参见下面的代码:

HTML:

<h2>Home</h2>
<p data-bind='text: message'></p>
<examlist params="list: StartList"></examlist>

所以将参数传递给examlist

在我的淘汰考试列表组件视图模型中:

define(['knockout', 'text!./examlist.html'], function(ko, templateMarkup) {

function Examlist(params) {
    this.message = ko.observable('Hello from the examlist component!');
    this.typeOfList = params.list;
    console.log(this.typeOfList);

我的控制台出现错误:

未捕获的 ReferenceError:未定义 StartList

examlist html 标签标记:

<h2>examlist</h2>

<p data-bind='text: message'></p>

这是为什么?

在我的视图模型中,我可以直接访问 params.list 以获取 if 语句吗?

提前感谢您的帮助。

问候,

【问题讨论】:

  • 这个考试清单标签是什么?有兴趣了解
  • 我还是看不懂你的html。你可以发布小提琴吗?
  • 您在 HTML 中使用了“StartList”,但它没有在 JS 中定义?
  • 你不需要一行 this.StartList = ko.observableArray(params.list)
  • 如果你需要传入一个字符串,只需传入一个字符串:&lt;examlist params="list: 'StartList'"&gt;&lt;/examlist&gt; 注意'' 周围的单引号 'StartList' 否则 KO 将 StarList 视为属性名称,你会得到这个异常

标签: knockout.js parameter-passing knockout-components


【解决方案1】:

您需要带有要绑定的列表的 viewModel,例如

function MainViewModel() {
    this.list1 = [1, 2, 3];
    this.list2 = ["test", "it", "work"];
}

var viewModel = new MainViewModel();

ko.applyBindings(viewModel);

比你可以绑定参数像

<examlist params="list: list1"></examlist>
<examlist params="list: list2"></examlist>

或者直接传递值数组:

<examlist params="list: [5, 6, 7]"></examlist>

Working sample

【讨论】:

  • 感谢您的意见,真的很有帮助!
猜你喜欢
  • 2012-10-05
  • 2018-01-18
  • 2015-06-04
  • 2015-12-06
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 2014-09-02
  • 1970-01-01
相关资源
最近更新 更多