【发布时间】:2013-06-20 22:35:14
【问题描述】:
目标
使用 KnockoutJS 从 DOM 元素中读取内容。
问题
我的 HTML 中有一个产品列表。代码是这样的:
<li>
<div class="introduction">
<h3>@Model["ProductName"]</h3>
</div>
<form data-bind="submit: addToSummary">
<input type="number"
placeholder="How much @Model["ProductName"] do you want?" />
<button>Add product</button>
</form>
</li>
当我点击<button>Add Product</button> 时,我想将提交的元素的<h3></h3> 内的文本发送给KnockoutJS。
使用 KnockoutJS 的文件是 外部 并且 独立 的 HTML。它的名字是summary.js,代码如下:
function ProductReservation(id, name, unity, quantity) {
var self = this;
self.id = id;
self.name = name;
self.unity = unity;
self.quantity = quantity;
}
function SummaryViewModel() {
var self = this;
self.products = ko.observableArray([
new ProductReservation(1, "Testing", "kgs", 1)
]);
self.addToSummary = function () {
// Do Something
}
}
我在想什么
HTML:
<li>
<div class="introduction">
<h3 data-bind="text: productName">@Model["ProductName"]</h3>
</div>
[...]
</li>
JS:
productName = ko.observable("text: productName");
但是,当然,没有成功——这不是正确的上下文或语法,只是为了说明。
所以我问:我需要做什么?
【问题讨论】:
-
为什么不
ko.observable("@(Model["ProductName"])");? -
你好,@nemesv。感谢您的参赛。问题是:我正在使用一个外部 JS 文件,它无权访问
@(Model["ProductName"])。 =( -
如果您使用 jQuery,您可以使用 jQuery 选择元素并以这种方式获取值。
-
@AndrewWhitaker 我曾考虑过,但相信 KnockoutJS 有事可做。
标签: javascript asp.net-mvc knockout.js