0
下面的代碼顯示了表中的一行,以及處理模板的JavaScript代碼。該代碼有效,但它在表中的所有按鈕上設置了禁用屬性。我只想要它被推送的一個按鈕元素。如何在Meteor.js/Handlebars.js中有條件地設置HTML元素的屬性?
問:在Meteor.js中有條件地將正確元素設置爲禁用的最佳方式是什麼?
在我的HTML文件:
<template name="userRow">
<tr>
<td>{{ username }}</td>
<td>
<select class="newRole">
{{{optionsSelected globalRoles profile.role }}}
</select>
</td>
<td>
Disabled: {{disabledAttr}}
{{#isolate}}
<button type="button" {{disabledAttr}} class="btn btn-xs btn-primary saveUser">Save</button>
{{/isolate}}
</td>
<td><button type="button" class="btn btn-xs btn-danger deleteUser">Delete</button></td>
</tr>
而且在我的.js文件:
var newUserRole;
var savedDep = new Deps.Dependency;
var saved;
var disabledDep = new Deps.Dependency;
var disabledAttr = "";
Template.userRow.saved = function() {
savedDep.depend();
return saved;
};
Template.userRow.disabledAttr = function() {
disabledDep.depend();
return disabledAttr;
};
Template.userRow.events({
'change .newRole' : function (event) {
newUserRole = event.target.value;
},
'click .saveUser' : function (event) {
disabledAttr = "disabled";
disabledDep.changed();
Meteor.call('updateUser',
{
userId: this._id,
role: newUserRole
},
function (error, result) {
if (error) {
saved = "NOT saved, try again!";
} else {
saved = "Saved!";
savedDep.changed();
};
});
return false;
}
});
謝謝!實際上,我採用了不同的方法,並完全刪除了「保存」按鈕,只需在選擇列表中觸發保存更改,並改爲給錯誤的FlashMessages提供反饋。 – user2602152
酷 - 這就是我在我的應用程序中也是如此:) – jrullmann