首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Knockout.js -数据绑定上的javascript函数

Knockout.js -数据绑定上的javascript函数
EN

Stack Overflow用户
提问于 2012-03-03 00:32:15
回答 5查看 38.6K关注 0票数 22

有没有一种方法可以像这样在数据绑定上调用JavaScript函数:

代码语言:javascript
复制
<span id="lblSomePropVal" data-bind="text: MySomeFunction(SomeProperty())" ></span>

我尝试做的是用我的视图模型的SomeProperty值调用MySomeFunction。我的SomeFunction将根据传递的值返回一些文本,这些文本将显示在跨度lblSomePropVal中。

我尝试了我在示例中编写的方法,但它抛出了绑定错误。

我是不是漏掉了什么,或者有没有其他方法可以做到这点?

这是我得到的错误:

代码语言:javascript
复制
Microsoft JScript runtime error: Unable to parse bindings.
Message: [object Error];
Bindings value: text: MySomeFunction(SomeProperty())
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-03 04:24:06

您可以使用任意的JavaScript表达式进行绑定,但请记住,它们是在视图模型的上下文中计算的,因此表达式中的所有函数都必须是视图模型的属性。在您的示例中,MySomeFunction必须是视图模型的属性。如果您使用映射插件创建视图模型,则可以将其他函数附加到视图模型,如下所示:

代码语言:javascript
复制
var viewModel = ko.mapping.fromJS(data.d)
viewModel.MySomeFunction = function(...){...};
票数 13
EN

Stack Overflow用户

发布于 2012-09-09 23:11:50

我在尝试计算表格单元格条目时遇到了类似的问题。对我来说起作用的是在我的数据模型中包含'MySomeFunction‘,然后将我的表单元格数据绑定为:

代码语言:javascript
复制
<td data-bind="text: $root.MySomeFunction(SomeProperty)"></td>
票数 16
EN

Stack Overflow用户

发布于 2012-03-03 00:38:46

我自己也在看教程,但我认为你必须设置一个属性并使用ko.computed来赋予它的值(来自教程):

代码语言:javascript
复制
function AppViewModel() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");
this.fullName = ko.computed(function(){ 
  return this.firstName() + " " + this.lastName(); 
  },this);
}

然后你可以拥有:

代码语言:javascript
复制
Full name: <strong data-bind="text: fullName"></strong>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9536856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档