我正在尝试做的是调用下面的函数,进一步我想传递当前元素(item)作为参数。
<tr rv-each-item="items:models">
<td><a href="javascript:selectedItem(item);">{ item:Name }</a></td>
</tr>
var selectedItem = function (item)
{
console.log(item);
}
在搜索时我发现下面的讨论很有帮助,但无法解决我的问题,因为它没有实现主干
https://github.com/mikeric/rivets/issues/554
Rivets.js: When button is clicked, call a function with an argument from a data binding
答案 0 :(得分:2)
在解决问题的过程中,我找到了可以提供帮助的不同方法,如果有人可以得到帮助或者有任何需要改进的话,可以在这里发帖。
选项1
if (LI[Constants.FieldName_ReqLst_DueDate] != null)
{
// create a time zone object hard coding to local time zone
var timeInfo = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var tempDate = (DateTime)LI[Constants.FieldName_ReqLst_DueDate];
req.DueDate = TimeZoneInfo.ConvertTimeFromUtc(tempDate, timeInfo);
}
选项2 创建自定义活页夹
<body>
<div rv-each-book="model.books">
<button rv-on-click="model.selectedBook | args book">
Read the book {book}
</button>
</div>
</body>
<script type="text/javascript">
rivets.formatters["args"] = function (fn) {
var args = Array.prototype.slice.call(arguments, 1);
return function () {
return fn.apply(null, args);
};
};
rvBinder = rivets.bind(document.body, {
model: {
selectedBook: function (book) {
alert("Selected book is " + book);
},
books: ["Asp.Net", "Javascript"]
}
});
</script>
选项3 当我使用带有主干的rivetsjs时,我也可以利用骨干视图上的事件
<body>
<div rv-each-book="books">
<a rv-cust-href="book">
Read the book {book}
</a>
</div>
</body>
<script type="text/javascript">
rivets.binders['cust-href'] = function (el, value) {
//el.href = '/Books/Find/' + value;
//OR
el.onclick = function() { alert(value);};
}
rvBinder = rivets.bind(document.body, {
books: ["Asp.Net", "Javascript"]
});
</script>