javascript - Firefox 代码检查器:如何在链接的 .js 文件中查找函数
问题描述
我正在尝试调试链接到 .JSON 的页面,相关字段代码如下:
<input type="text" name="company"
typeahead="company.description for company in retrieveCompanies($viewValue)" ...>
上面的函数在输入控件时调用,以显示包含我们输入的字母的元素;使用 Firefox Code Inspector,我如何找到retrieveCompanies($viewValue)
函数的来源?如果 firefox 正在执行此命令,它必须知道它的位置,因为它不在同一个页面中,它必须来自链接的 .js 文件。
编辑:在最后一条评论之后,我能够找到函数是 javascript,这是源代码,但我必须弄清楚它的填充位置,似乎这段代码生成了 chema html 页面(数据消费者?)但没有显示数据来自哪里:
define("text!accounts/widgets/domiciliazione-utenze/states/create/prepare/_views/addressbook-new.html", [], function() {
return '<div class="cb-recipient-panel cb-recipient-new padding-top" cb-parentpointer="{{\'new-contact\'}}" cb-children=""\n cb-pointer-show="true">\n <div class="col-xs-12">\n <h4>\n <strong>{{\'cbLabels.directDebit.addDebit\' | translate}}</strong>\n </h4>\n </div>\n <form id="addressbookForm_form" name="addressbookForm_form"\n cb-validation-schema="domiciliazione-utenze/schema/addressbook-new"\n cb-validation="verifyRequest" autocomplete="off">\n <div class="col-xs-6 form-group">\n <label class="control-label">{{\'cbLabels.directDebit.findCompany\' | translate}}</label>\n <div class="listCompany">\n <div class="typeahead">\n <input type="text" name="company" cb-validate\n class="form-control ng-pristine ng-valid" ng-model="companySelected"\n aria-autocomplete="list" aria-expanded="false"\n typeahead="company.description for company in retrieveCompanies($viewValue)"\n typeahead-loading="loadingLocations"\n typeahead-min-length="3"\n typeahead-wait-ms="300"/>\n <div cb-validate-errors="company"></div>\n </div>\n </div>\n\n </div>\n\n <div class="col-xs-6 form-group">\n <label> {{\'cbLabels.directDebit.nickname\' | translate}}<sup tooltip-html-unsafe="{{\'cbLabels.directDebit.nicknameMessage\' | translate}}"><i class="icon-info"></i></sup></label>\n <input type="text" name="nickname" class="form-control" ng-model="verifyRequest.nickname" maxlength="35"/>\n </div>\n \n <div class="col-xs-12 " ng-show="showCompanyCodeError()"><p class="text-danger">\n {{\'cbLabels.directDebit.companyCodeErrorMessage\'|translate}}</p></div>\n <div class="col-xs-12 " ng-show="showNoCompanyError()"><p class="text-danger">\n {{\'cbLabels.directDebit.companyError\'|translate}}</p></div>\n\n <div class="col-xs-6 form-group">\n <label> {{\'cbLabels.directDebit.uniqueReference\' | translate}}<sup\n tooltip-html-unsafe="è il codice identificativo della tua utenza,</br> ti viene fornito dall\'azienda creditrice"><i\n class="icon-info"></i></sup>\n </label>\n <div>\n <input type="text" name="refMandate" class="form-control" ng-model="verifyRequest.refMandate"\n maxlength="35" cb-validate/>\n <div cb-validate-errors="refMandate"></div>\n </div>\n </div>\n <div class="col-xs-6">\n <label> {{\'cbLabels.directDebit.heading\' | translate}} </label>\n <div class="typeahead">\n <select cb-select name="holder" ng-model="verifyRequest.holder" cb-datasource="holders"\n cb-validate cb-return-value="true" ng-required="submitted"></select>\n </div>\n </div>\n <div class="col-xs-12">\n <div class="row">\n <div class="col-xs-12">\n <label> {{\'cbLabels.directDebit.operationType\' | translate}} </label>\n </div>\n <div class="col-xs-3">\n <label class="radio-inline">\n <input type="radio" cb-radio name="operation" ng-value="true"\n ng-model="verifyRequest.isRecurring"\n label="{{\'cbLabels.directDebit.recurrent\' | translate}}"/>\n </label>\n </div>\n <div class="col-xs-3">\n <label class="radio-inline">\n <input type="radio" cb-radio name="operation" ng-value="false"\n ng-model="verifyRequest.isRecurring"\n label="{{\'cbLabels.directDebit.single\' | translate}}"/>\n </label>\n </div>\n </div>\n </div>\n\n <div ui-view="add-customize" autoscroll="false" class="col-xs-12"></div>\n\n <div class="col-xs-12 text-center padding-top padding-bottom">\n <button cb-button class="btn-active btn-lg" cb-ui-sref="directDebit.retrieve">\n {{\'cbLabels.directDebit.deleteUser\' | translate}}\n </button>\n <button cb-button class="btn-brand btn-lg" cb-validate-form="" cb-ui-sref="directDebit.create.verify"\n cb-param-name="createVerifyRequest"\n ng-model="verifyRequest">{{\'cbLabels.directDebit.addUser\' | translate}}\n </button>\n </div>\n </form>\n</div>\n\n'
}), define("accounts/widgets/domiciliazione-utenze/states/create/prepare/_controllers/DomiciliazioneUtenzeCreatePrepareController", [], function() {
"use strict";
function DomiciliazioneUtenzeCreatePrepareController($scope, prepareResponse, $stateParams, cbUpstreamStates, cbHalInterface) {
function convertCompanies(companies) {
return _.forEach(companies, function(company) {
company.description = company.value + " - " + company.key
}), companies
}
var retrievedCompanies = [],
retrievedCompaniesDone = !1;
$scope.verifyRequest = {}, $scope.avatars = _.range(54), $scope.verifyRequest.isRecurring = !0, $scope.holders = prepareResponse.holders, $scope.verifyRequest.holder = $scope.holders[0].value, cbUpstreamStates.set($scope.holders, "holders", 2), $scope.selectAvatar = function(avatar) {
$scope.verifyRequest.avatar = avatar
}, $scope.retrieveCompanies = function(filter) {
return retrievedCompaniesDone = !1, cbHalInterface.getRelatedResource("self", {
company: filter.trim()
}).then(function(response) {
return retrievedCompaniesDone = !0, retrievedCompanies = convertCompanies(response.companies)
})
}, $scope.$watch("companySelected", function(companyDescription) {
var company = _.find(retrievedCompanies, {
description: companyDescription
});
company && ($scope.verifyRequest.company = {
key: company.key,
value: company.value
})
}),
function(createPrepareRequest) {
return createPrepareRequest && Object.keys(createPrepareRequest).length > 0
}($stateParams.editParams) && ($scope.verifyRequest = $stateParams.editParams, $scope.companySelected = $stateParams.editParams.company.value + " - " + $stateParams.editParams.company.key), $scope.showCompanyCodeError = function() {
return $scope.verifyRequest && $scope.verifyRequest.company && _.isEmpty($scope.verifyRequest.company.key)
}, $scope.showNoCompanyError = function() {
return $scope.companySelected && $scope.companySelected.length > 2 && retrievedCompaniesDone && _.isEmpty(retrievedCompanies)
}
}
return DomiciliazioneUtenzeCreatePrepareController.$inject = ["$scope", "prepareResponse", "$stateParams", "cbUpstreamStates", "cbHalInterface"], DomiciliazioneUtenzeCreatePrepareController
}), define("text!accounts/widgets/domiciliazione-utenze/states/create/prepare/_views/add-customize.html", [], function() {
return '<label class="control-label">{{\'cbLabels.directDebit.selectAvatar\' | translate}}</label>\n<div cb-carousel=""\n cb-refresh-on="[addressBook.avatars, panels.customize.visible]">\n <ul class="circle-list margin-bottom margin-top">\n <li ng-repeat="avatar in avatars"\n ng-class="{active: verifyRequest.avatar == avatar}">\n <a ng-click="selectAvatar(avatar)">\n <div cb-avatar-icon="avatar" class="img"></div>\n </a>\n </li>\n </ul>\n</div>\n'
}), define("accounts/widgets/domiciliazione-utenze/states/create/prepare/config", ["text!./_views/addressbook-new.html", "./_controllers/DomiciliazioneUtenzeCreatePrepareController", "text!./_views/add-customize.html"], function(AddressbookNewTmpl, DomiciliazioneUtenzeCreatePrepareController, AddCustomizeTmpl) {
"use strict";
function CreatePrepareConfig($stateProvider) {
$stateProvider.state("directDebit.create.prepare", {
params: {
createPrepareRequest: {},
editParams: {}
},
parent: "directDebit.retrieve",
resolve: {
prepareResponse: ["cbStateResolve", "$stateParams", function(cbStateResolve, $stateParams) {
return cbStateResolve("directDebit.create.prepare", "start", $stateParams)
}]
},
views: {
"addressbook-new@directDebit.retrieve": {
controller: DomiciliazioneUtenzeCreatePrepareController,
template: AddressbookNewTmpl
},
"add-customize@directDebit.create.prepare": {
template: AddCustomizeTmpl
}
}
})
}
return CreatePrepareConfig.$inject = ["$stateProvider"], CreatePrepareConfig
});
解决方案
推荐阅读
- xml - 使用 XSLT 将连字符括在其自己的元素中
- flutter - 如何像更新一样在文本字段中添加键入的值
- python - 从 Python 数据框到嵌套字典
- apache-spark - Spark:Py4JJavaError: 调用 o142.saveAsTextFile 时出错
- excel - 如何在 SSAS 表格数据透视表中按降序对过滤器值进行排序?
- ruby-on-rails - 在 Ruby on Rails 中清空 PostgreSQL 文本数组列
- swift - ISO8601DateFormatter 接受错误的输入
- android - 未为 RequestMultiplePermissions 调用 ActivityResultCallback
- c# - 左侧必须是变量、属性或索引器 - 如何定义类型并将其转换为变量?(C#)
- python - 如何在 for 循环中创建多级索引,其中名称列表索引每个数据帧 [Python]?