JSHint“X未定义”是错误的

时间:2014-12-17 14:14:26

标签: ember.js jshint

我有一个ember.js项目(ember_cli),其中包含以下内容:

Sessions.hbs:

<form class="form-horizontal">
    <div class="form-group">
        <label class="control-label col-xs-1 col-xl-1">Username:</label>
        <div class="col-xs-4 col-xl-4">
          {{view Ember.TextField classBinding=":sessions-query" valueBinding="FilterUserName"}}
        </div>
    </div>
    <div class="form-group">
        <div class="col-xs-1 col-xl-1">
            <button id="query-sessions" {{action "querySessions"}}>Search</button>
        </div>
    </div>
</form>

sessions.js(控制器):

export default Ember.ArrayController.extend({
  actions: {
    querySessions: function () {
      var arr_simple_params = {};
      if ((typeof FilterUserName !== "undefined") && (FilterUserName !== "")) {
        arr_simple_params["user_name"] = FilterUserName;
      }
      ....
    }
  }
});

JSHint给了我: controllers/sessions.js: line 25, col 55, 'FilterUserName' is not defined.

但是当我实际使用变量时(方法的其余部分用它来构建查询字符串)一切正常

所以我想知道它为什么会发生(而不只是压制警告......)

1 个答案:

答案 0 :(得分:3)

JSHint感到不安,因为你引用了一个全局变量。你应该在控制器的开头输入这样的FilterUserName

import FilterUserName from 'path-to-filter'

或警告JSHint你正在使用全局:

/* global FilterUserName */

如果您在其他地方使用FilterUserName,也可以将其添加到.jshintrc