typeahead.js绑定到模板问题

时间:2013-09-27 18:20:16

标签: javascript typeahead.js hogan.js

我正在将用户图像绑定到hogan模板的类型,并且代码实际上工作正常但我在控制台中遇到错误,因为它试图获取资源:localhost:#### /%7B%7BuserBlankImgUrl%7D%7D

唯一有意义的是它试图绑定到模板值而不是等待值。

完全披露:我的应用程序使用的是DurandalJS和knockoutJS,但我试图在下面显示相关代码。我将根据建议添加更多内容。

模板:

<img class="quarc-avatar-list-item" src="{{userBlankImgUrl}}" />

JS:

    self.userImgUrl = ko.computed(function () {
        return avatar.fromGravatar(self.email(), self.gender());
    });

我尝试过的其他事情包括:

  1. 将模板包装在空检查中,这样就不会尝试绑定。
  2. 当我删除模板hmtl时,我的浏览器控制台中没有出现资源错误
  3. 尝试了解更多hogan和typeahead选项以寻找其他选项。不确定是否像预渲染或设置默认&#34;本地&#34;价值会有帮助吗?
  4. 谢谢,

    -Chris

1 个答案:

答案 0 :(得分:1)

我注意到的第一件事是您的self.userImgUrl与您的模板中使用的userBlankImgUrl不一样 - 如果这是故意的,则不会从您发布的代码段中清楚显示。

但是,在某些时候,您的脚本会输出模板,而不会通过模板对象的render()方法运行它。错误的请求是由/ a图像标记的src属性引起的,该标记的内容是“{{userBlankImgUrl}}”。我猜测你是在本地服务器上测试你的应用程序,所以它查找的地址是http://localhost/.../{{userBlankImgUrl}}(除非你问题中的###不只是缩短/隐藏路径而且确实是从localhost请求:#### /%7B%7BuserBlankImgUrl%7D%7D - 无论哪种方式(或至少部分问题)相同)。

Hogan.js删除出现在其呈现的模板中的任何未定义的车把变量:

var template = Hogan.compile(
    '<img class="quarc-avatar-list-item" src="{{undefinedVariable}}" />'
);
console.log( template.render({var1: "Test", var2: "Again"}) );

将输出到控制台:

<img class="quarc-avatar-list-item" src="" />

如果src属性中出现任何内容,或者出现{{templateVar}}null值的任何undefined,则您知道您的模板已输出而未经过正确的渲染方法