Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js emberjs车把模板中的字符串插值_Ember.js_Handlebars.js_String Interpolation - Fatal编程技术网

Ember.js emberjs车把模板中的字符串插值

Ember.js emberjs车把模板中的字符串插值,ember.js,handlebars.js,string-interpolation,Ember.js,Handlebars.js,String Interpolation,我正在使用它在rails应用程序中提供自动完成功能。我有一些动态id值。我的车把代码如下: {{ view App.TokenAutoCompleteView searchUrl="/users/" + some_dynamic_id + "/books/search" optionValuePa

我正在使用它在rails应用程序中提供自动完成功能。我有一些动态id值。我的车把代码如下:

{{
  view App.TokenAutoCompleteView                                                                                               
  searchUrl="/users/" + some_dynamic_id + "/books/search"
  optionValuePath="content.id"
  optionLabelPath="content.name"
  multiple="false"
}}

我想为searchUrl属性分配一个动态创建的url。我尝试从使用bind attr,但无法使其工作。

请记住,把手模板没有逻辑性,因此没有字符串插值的概念。您应该在控制器(或组件)内部的计算属性中执行此操作

在控制器中:

dynamicSearchUrl: function() {
    return '/users/' + this.get('someDynamicId') + '/books/search';
}.property('someDynamicId')
在模板中:

{{view App.TokenAutoCompleteView searchUrl=dynamicSearchUrl ... }}
{{
  view App.TokenAutoCompleteView
  searchUrl=(concat "/users/" some_dynamic_id "/books/search")
  optionValuePath="content.id"
  optionLabelPath="content.name"
  multiple="false"
}}

更新:我已经很久没有回答这个问题了,所以我想我会更新。现在,Ember.js使用了一个新版本的车把,支持。这意味着现在可以在模板中进行字符串连接。您只需要编写一个连接助手

// helpers/concat.js
export default Ember.Helper.helper(function(first, second, three) {
    // You could make this apply to more than three strings...
    return first + '' + second + '' + three;
});
完成后,只需在模板中使用子表达式:

{{view App.TokenAutoCompleteView searchUrl=dynamicSearchUrl ... }}
{{
  view App.TokenAutoCompleteView
  searchUrl=(concat "/users/" some_dynamic_id "/books/search")
  optionValuePath="content.id"
  optionLabelPath="content.name"
  multiple="false"
}}
在这种情况下,我仍然非常喜欢我的第一个答案,但第二个答案现在是可能的