Javascript 我想让我的观点认识到另一种观点的重要性

Javascript 我想让我的观点认识到另一种观点的重要性,javascript,jquery,html,css,ember.js,Javascript,Jquery,Html,Css,Ember.js,我有4个名为{{{#decoy Input class=“fieldInput”}}{{/decoy Input}}的把手辅助块,我想通过调用它们的类“fieldInput”,用Jquery引用它们 但是,当我使用{{{{decoy-Input class=“fieldInput”}}{{/decoy-Input}} 我猜这与视图的渲染顺序有关,但我想听听第二种意见 这是定义它们的视图 VpcYeoman.DecoyInputView = Ember.View.extend({ tagNam

我有4个名为
{{{#decoy Input class=“fieldInput”}}{{/decoy Input}}
的把手辅助块,我想通过调用它们的类“fieldInput”,用Jquery引用它们

但是,当我使用
{{{{decoy-Input class=“fieldInput”}}{{/decoy-Input}}

我猜这与视图的渲染顺序有关,但我想听听第二种意见

这是定义它们的视图

VpcYeoman.DecoyInputView = Ember.View.extend({
  tagName: 'div',
  click: function(e) {
    console.log('CanFocusInputView clicked')
    $('.fieldInput').removeClass('.focusedInput'); 
    this.$().addClass('focusedInput');
  },
});

Ember.Handlebars.helper('decoy-Input', VpcYeoman.DecoyInputView);
要获得绿色检查,您需要提供一种方法来调用decoy Input click函数内的所有4个
{{{{{decoy Input class=“fieldInput”}{{/decoy Input}}
块。它不需要使用JQuery


我意识到像“
this.$().parent().sides('.objectInput').children().removeClass('focusedInput')”这样的解决方案”也可以解决这个问题,但感觉这是一个糟糕的解决方法。

如果您真的只想利用Ember的运行循环和DOM挂钩,那么这就是其中之一

将整个shibang包装在视图中:

{{#view VpcYeoman.InputsView}}
  <input type="text" name="name"/>
  <input type="email" name="email"/>
  <!-- even better, use the input helper to bind the value -->
  {{input type="checkbox" name=name}}
{{/view}}

那会给你你想要的,不用太拘谨。希望这有帮助,如果我能进一步解释,请告诉我

这个答案好多了!感谢您的帮助,所以我要说清楚,当我使用jquery影响DOM时,我应该将该逻辑放在一个视图中,然后将该视图包装在我想要影响的DOM元素周围?@IanSteffy抱歉,我没有注意到这个问题。这是一种方法。您还可以创建一个没有任何包装html的自定义视图,但它会动态生成自己的html。您还可以创建一个组件。我更喜欢使用我向你们展示的模式,因为它非常容易阅读,至少对我来说是这样。希望有帮助!那帮了大忙!在你的回答中,{{view}不应该在'view'前面有一个#,因为它也有一个结尾{{/view}?哦,哎呀,是的,你是对的。那是个打字错误。更新了我的答案。
VpcYeoman.InputsView = Ember.View.extend({
  didInsertElement: function () {
    var $inputs = this.$('input');

    $inputs.on('focus', function (e) {
      $(this).addClass('focusedInput');
    });

    $inputs.on('blur', function (e) {
      $(this).removeClass('focusedInput');
    });
  }
});