2015-10-07 19 views
2

Phpstorm不断告诉我,我有一个未定义的变量input.connecttoJshint/PhpStorm: “未解决的变量” 使用jQuery的.data()时

HTML: <div class="b-showColorinList" data-connectto="123456" data-othervalue="Lorem Ipsum">...

JS:

$(document).on('click', '.b-showColorinList', function() { 
    cm.showColorInList($(this)); 
}); 

而且:

/** 
* Uses ajax to get other color in list view 
* @param {object} inputObj 
*/ 
cm.showColorInList = function(inputObj) { 
"use strict"; 

var input = inputObj.data(), 
    parent = $("#"+input.connectto), 
    othervalue = input.othervalue; 

我知道我可以忽略在一个jshint线,但有任何方法,使之与jsdoc正确,例如限定input作为对象

+0

如果您使用jQuery(如在$('.b-showColorinList')。data('connectto');')中,为什么不使用data(“connectto”)? – LazyOne

+0

对不起,我缩短了一下代码。当一个数据字段实际上更多。修正了现在 – Krillko

+0

我明白 - 我只是在想 - 如果这不是任务关键的代码或者执行得非常频繁或者需要立即执行而没有延迟的事情......那么为什么不用'data'方法来调用具体参数。 – LazyOne

回答

2

因此到JSDoc docs的正确方法应使用@typedef来定义实际的对象结构(尤其是有用的,如果这将是重新后来在另一个地方)和@type用来声明特定变量的类型:

/** 
* @typedef {Object} MyInputData 
* @property {string} connectto 
* @property {string} othervalue 
*/ 

/** @type {MyInputData} */ 
var input = inputObj.data(); 

这一个(只@typedef和变量名作为类型名)似乎PhpStorm工作,以及:

/** 
* @typedef {Object} input 
* @property {string} connectto 
* @property {string} othervalue 
*/ 
var input = inputObj.data();