我需要使用可以执行该功能的下拉列表:
我从silviomoreto git存储库中选择了@twitter bootstrap'bootstrap-select'的自定义选择,因为我没有找到我想要的功能,我试图自己制作它.
因此,对于那些需要或想要在他们的网络应用程序上添加该功能的人,我写下我的解决方案,这不是最好的解决方案,但它有效,我愿意接受任何建议,使其更好地工作.
1.步骤:创建一个带参数的selectpicker: data-size ="5"(显示5个值和添加滚动条),data-live-search ="true"(在顶部添加搜索框) 并加载值我从db(最好是ajax)获得:
<select class="selectpicker typedropdown" data-size="5" data-live-search="true">
<?php
$counter=0;
foreach($eventTypeList as $evType){
$counter++;
if(is_array($evType)){
echo "<option>".$evType['type_name']."</option>";
}else{
echo "<option>".$evType."</option>";
}
} ?>
</select>
Run Code Online (Sandbox Code Playgroud)
2.步骤:添加自定义按钮(编辑,删除) (覆盖原型函数'createLi')
覆盖主js文件上的原型函数'createLi',如下所示:
$.fn.selectpicker.Constructor.prototype.createLi = function (){..}
Run Code Online (Sandbox Code Playgroud)
内部:
var generateLI = function (content, index, classes, optgroup) {
return '<li' + ........
Run Code Online (Sandbox Code Playgroud)
在'return'之前添加两行按钮类:
content += "<div class='removeTypebtn'></div><div class='editTypebtn'></div>";
Run Code Online (Sandbox Code Playgroud)
这样,当您创建li项目时,您还会在每行上创建两个自定义按钮.
3. step:捕获'click'事件进行编辑和删除值 (也在数据库上发出ajax请求以更新dbtable)
$(document.body).on('click','.btn-group.typedropdown .dropdown-menu ul li .removeTypebtn',function(event){
var index = $(event.target).closest( "li" ).data('original-index');//get the item index …Run Code Online (Sandbox Code Playgroud) 新编辑: 检查登录的authservice:
'use strict';
angular.module('MainApp.login.services', [])
.factory('authService', ['AUTH_ENDPOINT', 'LOGOUT_ENDPOINT', '$http', '$cookieStore', function (AUTH_ENDPOINT, LOGOUT_ENDPOINT, $http, $cookieStore) {
var auth = {};
auth.login = function (username, password) {
return $http.post(AUTH_ENDPOINT, {username: username, password: password})
.then(function (response, status) {
auth.user = response.data;
$cookieStore.put('user', auth.user);
return auth.user;
});
};
auth.logout = function () {
return $http.post(LOGOUT_ENDPOINT).then(function (response) {
auth.user = undefined;
$cookieStore.remove('user');
$cookieStore.remove('event');
});
};
return auth;
}])
.value('AUTH_ENDPOINT', 'http://www.mydomain.gr/assets/modules/login/dal/login.php')
.value('LOGOUT_ENDPOINT', 'http://www.mydomain.gr/assets/modules/login/dal/logout.php');
Run Code Online (Sandbox Code Playgroud)
更新:
不幸的是,这是整个网络应用程序的一部分,所以我无法将其上传到jsfiddle.我制作了一个YouTube视频,我在调试应用程序时显示错误.从分钟1:30开始问题.随意检查
下面的视频是我的角度应用程序 的app.js.
我对模板中的$ watch是否可以创建错误?
Youtube在1:30之后启动错误:https …
我正在我的应用程序中调度一个CustomEvent带有detail属性的属性,然后我使用事件监听器将其抓取到另一个应用程序中。
我正在努力使用打字稿以使其顺利工作,但无论我到目前为止尝试过什么,我都遇到了障碍。
所以事件监听器就像这样(所有事情都发生在反应全局组件中):
window.addEventListener('my-custom-event', this.callEvent);
Run Code Online (Sandbox Code Playgroud)
再往下,我有callEvent这样的方法:
callEvent: any = (e: CustomEvent) => {
const {
detail,
} = e;
.......
}
Run Code Online (Sandbox Code Playgroud)
any当我尝试将函数的类型更改为有意义的类型时,会发生所有长错误“Typescript”消息callEvent,例如:
版本1:
callEvent: (e: CustomEvent) => void = (e: CustomEvent) => {...}
Run Code Online (Sandbox Code Playgroud)
版本 2: .
callEvent(e: CustomEvent) {
const {
detail,
} = e;
.....
}
Run Code Online (Sandbox Code Playgroud)
分辨率:
No overload matches this call.
Overload 1 of 2, '(type: keyof WindowEventMap, listener: (this: Window, ev: Event …Run Code Online (Sandbox Code Playgroud) Visual Studio Code 最近更改了搜索功能,或者仅在我的编辑器中。
以前,当我按Ctrl+时F,我可以在整个打开的文档中进行搜索。
但最近,当我按Ctrl+F进行搜索时,它会自动启用,右侧最后一个选项,**Find in selection(Alt+L)**.
由于我没有任何活动选择,因此它找不到任何内容,并且我每次都需要禁用该选项,以便搜索所有文档。
我可以默认禁用该选项吗?提前致谢。
我想知道如果我们进行多次导入是否会产生性能成本,如下所示:
import { wrapper } from './components/wrapper';
import { error } from './components/error';
import { products } from './components/products';
Run Code Online (Sandbox Code Playgroud)
在每个组件文件夹中,我都有一个 index.js 并将其导出为命名的,如下所示:
export { default as wrapper } from '.wrapper';
Run Code Online (Sandbox Code Playgroud)
相比:
将所有文件作为命名导入从同一源导入,如下所示:
import {
wrapper,
error,
products,
} from './components';
Run Code Online (Sandbox Code Playgroud)
在components文件夹中,我有一个索引,我在其中收集并导出所有文件,如下所示:
export { wrapper } from '...';
export { error } from '...';
export { products } from '...';
Run Code Online (Sandbox Code Playgroud) 也许解决方案在于我声明组件的方式:
import React, { FunctionComponent } from 'react';
export const ChapterDescription: FunctionComponent<
ChapterDescription
> = (
{
description,
name,
}: ChapterDescription,
) => (
<div>
<h3>{name}</h3>
<p>{description}</p>
</div>
);
Run Code Online (Sandbox Code Playgroud)
当我仅用于reactjs我的组件时,我可以轻松地有条件地渲染组件,如下所示(检查chapters数组是否有项目,然后才渲染组件):
<OtherComponent/>
<div>
{chapters.length > 0 && <ChapterDescription
name={name}
description={description}
/>}
</div>
<OtherComponent2 />
Run Code Online (Sandbox Code Playgroud)
当我在打字稿中尝试时,出现错误:
Type 'false | Element' is not assignable to type 'Element'.
Type 'false' is not assignable to type 'Element'.ts(2322)
Run Code Online (Sandbox Code Playgroud)
条件渲染不再是不好的做法了吗?我该如何处理这个案子?
我试图wait()在测试中避免使用该功能。
我知道,根据官方文档,Cypress 是异步工作的,我们不需要使用该wait()函数,特别是visit()命令处理该函数,因为它加载页面然后继续前进。
在我的测试用例中,我想处理导致问题的两件事:
打开左侧导航菜单上的下拉菜单。有 5 个菜单,我想要第二个
单击一个选项转到另一个页面
it("clicks on the 'Front End' and navigates to the correct page", () => {
visit(path, {
timeout: 120000,
pageLoadTimeout: 120000,
});
cy.get(selectors.CATEGORIES)
.eq(2)
// I use 'within', because I want to search **inside the
// selectors.CATEGORIES.eq(2) and not on the whole DOM**
.within(() => {
cy.get(dataCySelector("gridRow")).then(($optionsWrapper) => {
const parentEl = $optionsWrapper.parent();
const isMenuOpen = parentEl.css("display");
// if i dont add the wait(), it selects the …Run Code Online (Sandbox Code Playgroud) javascript ×5
reactjs ×3
ecmascript-6 ×2
typescript ×2
ajax ×1
angularjs ×1
cypress ×1
cypress-conditional-testing ×1
dom-events ×1
dropdownbox ×1
editor ×1
events ×1
html ×1
jquery ×1