我正在使用Backbone.js做一個應用程序,但我是Backbone.js的新手。我需要更改HTML元素的樣式屬性。有沒有使用Backbone.js中的某些東西來改變HTML元素的樣式?避免與Backbone.js使用document.getElementById
裏面的index.html我把它隱藏段落:
<input type="text" id="name" placeholder="Enter name">
<p id="error_msg_name1" style="display: none;">
Please, enter the name of the configuration.
</p>
當有人試圖拯救空「名稱」的模型中,本款應表示,我是這樣處理的:
var nameValue = document.getElementById("name").value;
if (nameValue == '') {
document.getElementById("error_msg_name1").style.display = 'inline';
}
我的導師告訴我,我不應該使用document.getElementById
,我應該使用Backbone.js中的某些東西。我搜索了幾天,但我沒有發現任何有用的東西。
這是我的模型:
var Configuration = Backbone.Model.extend({
defaults: function() {
return {
name: '',
description: '',
version: ''
};
}
});
這裏是查看:
var ConfigurationView = Backbone.View.extend({
events: {
'click #ok': 'createConf',
'click #cancel': 'cancelConf',
'click #preview': 'showJSON',
'click #readFile': 'readFile'
},
readFile: function() {
var files = document.getElementById('fileInput').files;
if (!files.length) {
alert('Please select a file!');
return;
}
var file = files[0];
var reader = new FileReader();
reader.onloadend = function(evt) {
if (evt.target.readyState == FileReader.DONE) {
var fileContent = evt.target.result;
document.getElementById('previewFile').textContent = fileContent;
importedConfiguration = new Configuration(JSON.parse(fileContent));
$('<div class="col-sm-offset-2 col-sm-10">\
<button type="button" class="btn btn-default btn-sm" id="update">Update</button>').appendTo('#for_button');
}
};
reader.readAsBinaryString(file);
},
remove: function() {
$(this.el).empty().detach();
return this;
},
cancelConf: function() {
this.render();
},
createConf: function() {
document.getElementById("error_msg_name1").style.display = 'none';
document.getElementById("error_msg_name2").style.display = 'none';
document.getElementById("error_msg_description").style.display = 'none';
document.getElementById("error_msg_version").style.display = 'none';
var nameRegex = /^[A-Za-z]+$/;
var nameValue = document.getElementById("name").value;
var descriptionValue = document.getElementById("description").value;
var versionValue = document.getElementById("version").value;
if (descriptionValue != '' && versionValue != '' && nameRegex.test(nameValue)) {
configuration.set({name: nameValue, description: descriptionValue, version: versionValue});
document.getElementById("for_preview_JSON").innerHTML = JSON.stringify(configuration);
document.getElementById("for_preview_JSON").disabled = true;
var data = "text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(configuration));
$('<a href="data:' + data + '" download="data.json">download JSON</a>').appendTo('#for_download_link_JSON');
document.getElementById("ok").disabled = true;
document.getElementById("preview").disabled = true;
document.getElementById("name").disabled = true;
document.getElementById("description").disabled = true;
document.getElementById("version").disabled = true;
}
else {
if (nameValue == '') {
document.getElementById("error_msg_name1").style.display = 'inline';
}else if(!nameRegex.test(nameValue)) {
document.getElementById("error_msg_name2").style.display = 'inline';
}
if (descriptionValue == '') {
document.getElementById("error_msg_description").style.display = 'inline';
}
if (versionValue == '') {
document.getElementById("error_msg_version").style.display = 'inline';
}
}
},
showJSON: function() {
var preview_conf = new Configuration({
name: document.getElementById("name").value,
description: document.getElementById("description").value,
version: document.getElementById("version").value
});
document.getElementById("for_preview_JSON").innerHTML = JSON.stringify(preview_conf);
document.getElementById("for_preview_JSON").disabled = true;
},
initialize: function(options){
this.template = options.template;
},
render: function(){
var content = $(this.template).html();
$(this.el).html(content);
return this;
}
});
你有什麼Backbone.View它包裝的index.html模板? – 2014-11-24 14:33:20
是的,我喜歡。而我發佈的這個javascript部分來自該視圖內的一個函數。 – hajimal 2014-11-24 14:37:33
你能發佈所有視圖定義嗎? – 2014-11-24 14:38:57