Metamorph脚本标签被添加到Ember/Sproutcore 2.0中的value属性

dag*_*da1 4 ember.js

我有以下控制器,其中包含一个视图:

Lead.Controllers.UrlSearch = Ember.Object.extend
  init: ->
    @_super()

    @url_search = Lead.UrlSearch.create()

    @url_search.set('search_url', 'http://www.bdec-online.com/bd-cmpy/bd-cz.cfm')

    @view = Ember.View.create
      controller: @
      urlSearchBinding: 'controller.url_search'
      templateName: 'app/templates/url_search/show'

    @view.appendTo('#fieldset')
Run Code Online (Sandbox Code Playgroud)

app/templates/url_search/show中的模板如下所示

<label for="url_search_url">Url</label>
<input id="url_search_url" name="url_search[url]" size="30" type="search" value="{{urlSearch.search_url}}">
<button class="button" id="goButton" type="button">GO</button>
Run Code Online (Sandbox Code Playgroud)

除了包含metamorph脚本标记的value参数之外,视图也会被渲染得很好:

<input id="url_search_url" name="url_search[url]" size="30" type="search" value="&lt;script id='metamorph-0-start' type='text/x-placeholder'&gt;&lt;/script&gt;http://www.bdec-online.com/bd-cmpy/bd-cz.cfm&lt;script id='metamorph-0-end' type='text/x-placeholder'&gt;&lt;/script&gt;">
Run Code Online (Sandbox Code Playgroud)

无论如何,我可以阻止这些脚本标签被渲染或是否有一个配置设置来阻止这个?

Dav*_*lli 14

如果要避免将属性输出包含在这些标记中,请使用未绑定的帮助程序:

My new car is {{unbound color}}.
Run Code Online (Sandbox Code Playgroud)

您的输出将没有标记,但要小心,因为输出不会自动更新!

My new car is blue.
Run Code Online (Sandbox Code Playgroud)

(见http://emberjs.com/#toc_handlebars-basics)


小智 9

这正是{{bindAttr}}助手可用的原因.这应该为你做的工作:

<input id="url_search_url" name="url_search[url]" size="30"
 type="search" {{bindAttr value="urlSearch.search_url"}}>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,`bindAttr`被软弃用,支持`bind-attr` http://emberjs.com/blog/2013/08/29/ember-1-0-rc8.html (3认同)