首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >敲除触发applyBindings上的单击绑定

敲除触发applyBindings上的单击绑定
EN

Stack Overflow用户
提问于 2012-04-12 16:07:55
回答 2查看 22K关注 0票数 60

最近,我将ViewModel分离到一个单独的JavaScript文件中。

代码语言:javascript
复制
var Report = (function($) {
    var initialData = [];
    var viewModel = {
        reports: ko.observableArray(initialData),
        preview: function(path) {
            // preview report
        },
        otherFunctions: function() {}
    };
    return viewModel;
})(jQuery);​

下面是与HTML和Knockout相关的代码

代码语言:javascript
复制
<script type="text/javascript" src="path/to/report/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {
        ko.applyBindings(Report, document.body);
    });
</script>

HTML用户界面有一个按钮,单击该按钮即可将数据绑定到视图模型中的预览功能

代码语言:javascript
复制
<input type="button" name="Preview" id="Preview" class="btnPreview" 
    data-bind="click: Report.preview('url/to/report')" />

在$().ready()函数中执行以下行时,将调用Problem预览方法

代码语言:javascript
复制
ko.applyBindings(Report, document.body); 

也就是说,不需要用户点击预览按钮,就会触发预览功能。导致这种行为的原因可能是什么?当我在超文本标记语言页面本身中查看模型JavaScript时,整个东西都工作得很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-12 16:18:38

原因是,您实际上是在调用预览函数(因为编写functionName意味着引用该函数,所以编写functionName()意味着调用它)。

因此,data-bind="click: Report.preview"将按预期工作,但不需要传递参数。

正如the manual所说(在不同的主题上,但这仍然适用):

如果您需要传递更多参数,一种方法是将处理程序包装在接受参数的函数文本中,如下例所示:

代码语言:javascript
复制
<button data-bind="click: function(data, event) { myFunction(data, event, 'param1', 'param2') }">
    Click me
</button>

或者在你的例子中:

代码语言:javascript
复制
data-bind="click: function() { Report.preview('url/to/report') }"

另一种解决方案是让预览()返回一个函数(实际上几乎是一样的):

代码语言:javascript
复制
preview: function(path) {
    return function() {
        // ...
    }
}
票数 86
EN

Stack Overflow用户

发布于 2012-10-05 20:33:42

另一种解决方案是使用“bind”结构:

代码语言:javascript
复制
data-bind="click: Report.preview.bind($data, 'url/to/report')" 

其中绑定()的第一个参数将成为被调用函数中的'this‘。

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10119767

复制
相关文章

相似问题

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