我无法工作的继承的Knockout模板

时间:2017-01-29 17:56:30

标签: knockout.js

我是我工作的新开发者,并继承了这个代码作为我的第一个项目。此代码在应用程序中工作,但是当我尝试手动添加值时,它会中断,我不明白为什么。

模板代码是预先存在的部分,剩下的就是我试图实现它。

以下是代码:

<p>Rate: <strong data-bind="text: rate"></strong></p>
<div data-bind="template: { name: 'percentage-template', data: { data: rate, enable: secure }}"></div> 

<script type="text/html" id="percentage-template">
    <div class="input-group">
        <input type="text" 
        class="form-control" 
        data-bind="vale: data, 
                precision: precision || 2, 
                isPercent: isPercent || true, 
                enable: enable || true"
        />
        <span class="input-group-addon">%</span>
    </div>
</script>

<script type="text/javascript">
    function MyViewModel() {     
        this.rate = ko.observable(.01);
        this.secure = ko.observable(false);
    }

    ko.applyBindings(new MyViewModel());
</script>

以下是在app中使用的视图部分:

<div data-bind="template: { name: 'percentage-template', data: {data: Form.Current.Rate, enable: ViewSecurity.Edit}}"></div> 

问题在于,使用模板时,输入框仍为空,并且不显示速率。

编辑:我将模板中的自定义绑定更改为值,谢谢bryan 我也把值观察成了

1 个答案:

答案 0 :(得分:0)

模板设置为绑定到&#39;数据&#39;并且在您的情况下,您通过&#39; rate&#39;进入那个约束,但是&#39;率&#39;不是设置为可观察的,因此它只能从模型中获取初始值,并且不会成为捕获更新的双向绑定。如果您希望在文本输入中输入更改以更新&#39; rate&#39;您的模型上的变量然后您需要使速率成为可观察的。

this.rate = ko.observable(.01);