Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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
Javascript AngularJS使用组件作为输入标记占位符_Javascript_Angularjs_Angularjs Directive_Angularjs Components - Fatal编程技术网

Javascript AngularJS使用组件作为输入标记占位符

Javascript AngularJS使用组件作为输入标记占位符,javascript,angularjs,angularjs-directive,angularjs-components,Javascript,Angularjs,Angularjs Directive,Angularjs Components,我有一个本地化组件,如下所示: (function() { 'use strict'; angular .module('app.core') .component('i18n', { templateUrl: './i18n.html', bindings: { code: '@' }, controller: i18n, controllerAs: 'vm' }); i18n

我有一个本地化组件,如下所示:

(function() {
  'use strict';

  angular
    .module('app.core')
    .component('i18n', {
      templateUrl: './i18n.html',
      bindings: {
        code: '@'
      },
      controller: i18n,
      controllerAs: 'vm'
    });


  i18n.$inject = ['langStrings'];

  function i18n(langStrings) {
    const vm = this;
    this.$onInit = () => {
      vm.text = langStrings.get(vm.code);
    };
  }
})();
i18n模板由一行组成:

{{vm.text}}
这对于显示字符串非常有用,但当我想在另一个组件或模板中使用字符串作为输入标记的占位符时,我不知道如何应用它。例如,我如何在另一个上下文中应用输入占位符的组件最终结果

输入其他组件或模板

<input 
    placeholder="<i18n code='searchPlaceholder'/>"
>

我正在使用angularJs 1.7.2

输入占位符属性正在等待字符串。是一个呈现HTML元素的组件,就像它在指令中的名称限制一样,因为witch组件实际起作用

可以在属性上支持角度。因此,基本上,您需要创建类似占位符={{exp}}的内容,exp求值必须返回字符串

或者创建一个将输入呈现为HTML的组件 使用方法{{langStrings.getv}}并将其强制转换为var,因此使用占位符={vm.text}}或ng init=z=lngs'asdf';占位符={z} 访问元素并更改其属性,这可以在组件的函数或模板函数上完成。 或者基本上,您创建的内容是它投射字符串而不是呈现其HTML。使用i18n的定制服务4示例。 尝试一种更简单的方法,使用link函数更改指令上的elements属性

作用{ "严格使用",; 函数I18NLANG字符串{ 返回{ 限制:“CA”, 范围:{ 代码:'@' }, 链接:functionscope、elem、attrs{ //attrs.$set'placeholder',langStrings.getscope.code; //观察插值属性的更改 属性$观察“代码”,函数值{ 让text=langStrings.getvalue; 元素属性“占位符”,文本; }; //https://stackoverflow.com/questions/14876112/angularjs-difference-between-the-observe-and-watch-methods //范围.$watch'code',functionnewval{ //让text=langStrings.getnewval; //元素属性“占位符”,文本; //}; }, } } 函数testCtrl$scope,langStrings{ $scope.lngs=functionv{ 返回langStrings.getv; }; 归还这个; } 有棱角的 .模块'app',[] .成分‘i18c’{ 绑定:{ 代码:'@' }, 模板:函数$element、$attrs、langStrings{ 设c=langStrings.get$attrs.code; 返回``; } } .指令“i18nCustom”,i18n .controller'testCtrl',testCtrl //i18n.$inject=['langStrings']; .factory'langStrings',函数{ this.get=v=>{ 返回v+'-变换'; }; 归还这个; } };
这有帮助吗?占位符={{vm.text}}对不起,我给出的说明不清楚。澄清了这个问题。