我试着用主干线。用于构建应用程序的木偶。应用程序通过REST调用获取数据。
在这个应用程序中,我创建了一个包含以下字段的模型:
我还创建了一个包含模型完整表单的ItemView。我使用的模板是:
<form>
<input id="model-id" class="uneditable-input" name="id" type="text" value="{{id}}"/>
<input id="model-name" class="uneditable-input" name="name" type="text" value="{{name}}" />
<select id="model-language" name="language"></select>
<select id="model-type" name="type"></select>
<button class="btn btn-submit">Save</button>
</form>
(我正在使用Twig.js呈现模板)
我能够成功地获取模型的数据并显示视图。
我现在要做的是用选项填充模型语言和模型类型的选择框。作为REST调用的结果,语言和类型字段也将被限制为值,即。我有一个通过REST提供给我的语言列表和类型列表。
我正在考虑有两个集合,一个用于语言,一个用于类型,为每个集合创建一个视图(即viewLanguageSelectOptions和viewTypeSelectOptions),以我上面指定的模板的形式呈现选项。我不确定的是这是否可能,或者在哪里填充选项,以及如何根据模型中的数据设置所选选项。我不清楚,即使通过查看可用的示例和文档,哪种木偶视图类型可以最好地实现这一点。也许我看错方向了。
换句话说,我现在陷入了困境,我想知道你们中的任何一位骨干木偶用户有什么建议或解决方案。希望你能帮忙!
在我看来,在您描述的场景中不需要为选择创建视图,因为我假设您的语言列表不会经常更改,唯一的用途是提供一个列表,从中选择值,以便您可以使用jquery在视图的onRender或initializace函数中填充选择。
您可以在呈现视图之前调用REST服务并获取列表,然后将此列表作为选项传递给视图,并填充onRender函数上的选择
var MyItemView = Backbone.Marionette.ItemView.extend({
initialize : function (options) {
this.languages = options.languages;
this.typeList = options.typeList;
},
template : "#atemplate",
onRender : function () {
this.renderSelect(this.languages, "#languagesSelect", "valueofThelist");
this.renderSelect(this.typeList, "#typesSelect", "valueofThelist")
},
renderSelect :function (list, element, value) {
$.each(list, function(){
_this.$el.find(element).append("<option value='"+this[value]+"'>"+this[value]+"</option>");
});
}
})
var languagesList = getLanguages();
var typeList = getTypesList();
var myItemView = new MyItemView({languages:languagesList,typeList :typeList });
希望这能有所帮助。