首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用knockoutjs模板绑定来绑定依赖模板?

如何使用knockoutjs模板绑定来绑定依赖模板?
EN

Stack Overflow用户
提问于 2015-01-26 18:26:36
回答 1查看 35关注 0票数 1

我有一系列需要呈现为不同表单元素的属性,具体取决于它们的FieldControlId

代码语言:javascript
复制
<script type="text/html" id="elc-field">
<div class="grid_8">
    <span data-bind="text: FieldDisplayName"></span>
</div>
<div data-bind="if: FieldControlId == 1 " class="grid_8">
    <input type="text" data-bind="value: FieldValue , attr: { 'id': FieldId  }" />
</div>
 <div data-bind="if: FieldControlId == 2 " class="grid_8">
     <input data-bind="value: FieldValue , numeric: number , attr: { 'id': FieldId  }" />
</div>
<div data-bind="if: FieldControlId == 3 " class="grid_8">
    <select data-bind="combobox:FieldValue , attr: { 'id': FieldId }"></select>
</div>
<div data-bind="if: FieldControlId == 4 " class="grid_8">
    <input class="dt" data-bind="attr: { 'id': FieldId } ,  value: FieldValue, datepicker:true" />
</div>

<div class="clear"></div>

但是,我希望一些控件也依赖于另一个属性的选定值。例如,定义第二个<select>的内容的<select>,而后者又定义第三个turn。

EN

回答 1

Stack Overflow用户

发布于 2015-01-27 05:37:19

您可以创建可确定模板的模型的计算属性。例如:

代码语言:javascript
复制
var model = function(){
    var self = this;

    self.NeedsSpecialTemplate = ko.observable(true);

    self.SpecialText = ko.observable('Special Text');

    self.Template = ko.computed(function(){
        if(self.NeedsSpecialTemplate()){
            return 'special-template'
        }
        return 'normal-template'
    })
}

然后在你的标记中使用:

代码语言:javascript
复制
<div data-bind="template:{ name: Template() }"></div>

和模板示例:

代码语言:javascript
复制
<script type="text/html" id="normal-template">
    <div>Normal Stuff</div>
</script>

<script type="text/html" id="special-template">
    <div>Special Stuff</div>
    <div data-bind="text: SpecialText"></div>
</script>

从那里,发送级模板可以嵌套从附加属性驱动的附加模板。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28148340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档