2015-10-07 26 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();