我正在研究Durandal项目,我需要知道从HTML端调用函数传递参数的最佳方法。 在以前的版本中,我总是这样使用:
<div data-bind="foreach: rows">
<div data-bind="visible: $root.myFunction.bind($data,'parameter')">
...
...
</div>
</div>
但是在这种情况下,在Js方面,在我的功能中,我只收到主要对象:我无法接收我的ROW数据而且我无法接收参数&#39;值! 这是我在js方面的模型:
define(['services/datacontext', 'durandal/app', 'config'],
function (datacontext, app, config) {
var model = function () {
var self = this;
...
...
...
}
model.prototype.myFunction(parameter) {
var show = false;
...
...
return show;
}
return model;
}
你能帮帮我吗?
答案 0 :(得分:1)
您可以在$data
中访问this
myFunction
- .bind
的第一个参数设置上下文(context = this
引用的对象到)。
model.prototype.myFunction(parameter) {
var show = false;
// `this` is the $data you specified in your view
return show;
}
答案 1 :(得分:0)
您可以使用函数表达式:
<!-- function expression -->
<div data-bind="click: function (data) { myFunction('param1', data) }">...</div>
这样你就可以避免只传递一个参数。 示例:
<p>Test</p>
<div data-bind="foreach: test">
<button data-bind="click: function (data) { myFunction('param1', data) }">Test</button>
</div>
ko.applyBindings({
test: [{
myFunction: function (param1, data) {
alert(param1 + " " + data.data);
debugger;
},
data: "test1"
}, {
myFunction: function (param1, data) {
alert(param1 + " " + data.data);
},
data: "test2"
}]
});