backbone 铆钉:在 href/onclick 属性上调用方法(函数)
rivets with backbone: calling method (function) on href/onclick attribute
我想做的是像下面这样调用函数,我还想将当前元素(项目)传递给函数作为参数。
<tr rv-each-item="items:models">
<td><a href="javascript:selectedItem(item);">{ item:Name }</a></td>
</tr>
var selectedItem = function (item)
{
console.log(item);
}
在四处搜索时,我发现下面的讨论很有用,但无法解决我的问题,因为它没有实现 backbone
https://github.com/mikeric/rivets/issues/554
Rivets.js: When button is clicked, call a function with an argument from a data binding
在四处工作时,我发现了不同的方法可以提供帮助,如果有人可以获得帮助或改进(如果有任何需要),请在此处发布。
选项 1
<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>
选项 2
创建自定义活页夹
<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>
选项 3
当我在 backbone 中使用 rivetsjs 时,我还可以利用 backbone 视图
上的事件
// backbone view
events: {
'click #linkid': 'linkclicked'
},
linkclicked: function (e){
console.log(this.model.get("Name"));
},
<td><a id="linkid" href="#">{ item:Name }</a></td>
我想做的是像下面这样调用函数,我还想将当前元素(项目)传递给函数作为参数。
<tr rv-each-item="items:models">
<td><a href="javascript:selectedItem(item);">{ item:Name }</a></td>
</tr>
var selectedItem = function (item)
{
console.log(item);
}
在四处搜索时,我发现下面的讨论很有用,但无法解决我的问题,因为它没有实现 backbone
https://github.com/mikeric/rivets/issues/554
Rivets.js: When button is clicked, call a function with an argument from a data binding
在四处工作时,我发现了不同的方法可以提供帮助,如果有人可以获得帮助或改进(如果有任何需要),请在此处发布。
选项 1
<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>
选项 2 创建自定义活页夹
<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>
选项 3 当我在 backbone 中使用 rivetsjs 时,我还可以利用 backbone 视图
上的事件// backbone view
events: {
'click #linkid': 'linkclicked'
},
linkclicked: function (e){
console.log(this.model.get("Name"));
},
<td><a id="linkid" href="#">{ item:Name }</a></td>