小编DJC*_*DJC的帖子

HTML语义和样式

我的问题是 - 使用某些HTML标签仍然是最佳做法,即使您需要根据浏览器解释和显示这些标签的方式进行不同的设置吗?

例如 - HTML5 <blockquote>标记将在其自己的行上开始,具有默认边距和填充,以及缩进.

但是 - 如果你不希望有缩进,你是否仍然使用<blockquote>标签以向浏览器和搜索引擎传达意义,然后应用CSS来减少/消除缩进,或者你应该只使用<p>标签例?

重新设计blockquote元素并没有太大的努力,我认为使用最准确地传达其内容含义的标签很重要,但同时我不想养成编写额外代码的习惯.最好不要这样做.

html css html5 css3

5
推荐指数
1
解决办法
165
查看次数

使用其他元素的触发器单击阻止关闭导航栏

我正在使用jasny bootstrap offcanvas navbar(http://jasny.github.io/bootstrap/components/#navmenu-offcanvas),只要点击事件发生在页面的其他地方,它就会关闭.但是,我们有一个Twitter提要,已被修改为在3个不同的Twitter帐户之间移动.为了在它们之间切换,触发了点击.这导致每次推文切换时导航菜单关闭,我似乎无法阻止它.

这是推特滚动代码:

var tabCarousel = setInterval(function() {
    var tabs = $('#twittertab > li'),
        active = tabs.filter('.active'),
        nextone = active.next('li'),
        toClick = nextone.length ? nextone.find('a') : tabs.eq(0).find('a');
    toClick.trigger('click');
}, 5000)
Run Code Online (Sandbox Code Playgroud)

我试过申请preventDefault(),并stopPropagation()trigger('click'),但我非常缺乏经验与jQuery和我真的只是猜测哪里放这个.

javascript css jquery twitter-bootstrap jasny-bootstrap

5
推荐指数
1
解决办法
893
查看次数

Laravel/jwt-auth和Angular/Satellizer应用程序出现随机400"token_invalid"错误

我有一个Angular应用程序,它使用我在Laravel中构建的API,并且我使用jwt-auth进行令牌管理,并在前端使用satellizer来为每个请求发送令牌.

我的生活环境(无论是前端和API - 一旦应用程序完成后,将被移动到不同的服务器),目前由2个带有负载平衡器Nginx的运行AWS EC2实例.两台服务器都具有相同的jwt密钥.

但是,目前我无法解决任何模式,我随机从我的api返回400"token_invalid"错误.它不是一个特定的api路由,也不是应用程序的每个负载.当我从我的/客户端端点获得400错误时,其他请求将返回200.下次,所有人都将返回200.之后的时间我可能会为/ clients返回200但是/ users的400错误.

这可能是我使用负载均衡器的问题吗?正如我所说,jwt密钥在两台服务器上是相同的 - 因为所有代码都在GIT中.

我没有使用jwt.refresh中间件.

还有一点需要提一点,我在生产过程中通过Homestead在本地运行应用程序时,不会得到400错误.

编辑 -这好像注销(这将清除我的两个用户对象(仅基本信息),并从本地存储的令牌,清除我的缓存,然后重新登录最常引起的误差-这是有帮助吗?

以下是我的一个api电话的示例.

App.js

.service('ClientsService', function($http, $q, __env) {
    this.index = function () {
        var deferred = $q.defer();
        $http.get(__env.apiUrl + '/clients')
            .then(function successCallback(response) {
                    console.log(response.data);
                    deferred.resolve(response.data);
                },
                function errorCallback(response) {
                    console.log(response);
                });
        return deferred.promise;
    }
})
Run Code Online (Sandbox Code Playgroud)

ClientsController.js

.controller('ClientsController', function(ClientsService, $stateParams, $mdDialog, $mdToast) {
            var vm = this;
            ClientsService.index().then(function(clients) {
                console.log('ClientsCtrl init');
                vm.clients = clients.data;
            });
            // other controller code
})
Run Code Online (Sandbox Code Playgroud)

我真的很难调试这个,所以任何帮助都会非常感激.如果需要更多信息,请告诉我.

php nginx jwt angularjs satellizer

5
推荐指数
1
解决办法
314
查看次数

实现多个过滤器AngularJS的最佳方法是什么?

我有多个过滤器在ng-repeat上工作正常.但是,代码似乎没有多长时间实际操作集合上的过滤器,我想知道是否有更好的方法.

这是一个示例过滤器 - 这一点我没关系(除非有人有任何建议) - 它们都遵循类似的结构:

app.js

.filter('taskClient', function() {
    return function (items, clientId) {
        if (!clientId) { return items; }
        var filtered = [];
        angular.forEach(items, function(item) {
            if (item.client) {
                if (item.client.id === clientId) {
                    filtered.push(item);
                }
            }
        });
        return filtered;
    }
})
Run Code Online (Sandbox Code Playgroud)

正如我所说 - 其中有几个.然后,在我的ng-repeat上,我实现它们(这似乎很难维护并且过长,并且会欣赏有关任何更好技术的信息):

任务-的index.html

<md-list-item icp-task-line ng-repeat="task in TasksCtrl.tasks | taskOwner: TasksCtrl.selectedUserFilter | taskClient: TasksCtrl.clientId | taskDepartment: TasksCtrl.departmentId | taskPriority: TasksCtrl.priority | taskWithClient: TasksCtrl.withClient | taskEndDate: TasksCtrl.endDate | filter: {progress: 0} | filter: searchText …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

5
推荐指数
1
解决办法
733
查看次数

使用track by强制接合ng-repeat阵列

我们的应用程序有一个任务列表,可以增长很大.主要任务列表有一个侧边栏,当选择任务时,可以在侧边栏中编辑它 - 它使用不同的控制器(TasksSidebarCtrl而不是显示列表的TasksCtrl).复制所选任务,然后将其合并回列表.此通信在TasksService中处理.

索引中每个任务的观察者数量巨大,因此我们决定采用不同的方法.

使用一次性绑定大大减少了观察者的数量(实际上,只有子菜单才能编辑/更改任务的状态而不在创建观察者的侧栏中选择它),但因为我们正在使用track by task.id(我认为考虑到我们拥有的过滤器的数量和DOM将改变的频率是必要的),使用splice不会删除并用新的更新任务替换任务 - 我理解这是完整的跟踪点.

有没有办法强制更新这个任务项目惠斯特仍然使用track by和one-time绑定?

tasks-index.html(我删除了过滤器以提高可读性)

<md-list-item my-task-directive ng-repeat="task in TasksCtrl.tasks track by task.id">
Run Code Online (Sandbox Code Playgroud)

TasksCtrl

TasksService.index().then(function(tasks) {
    vm.tasks = tasks.data ? tasks.data : [];   
});

$scope.$on('task-updated', function() {
    var newTask = TasksService.getUpdatedTask();
    $timeout(function() {
        vm.tasks.splice(newTask.index, 1, newTask.task);
    });
});
Run Code Online (Sandbox Code Playgroud)

TaskSidebarCtrl

$scope.$watch(function() {
    return TasksService.getSelectedTask();
}, function (newVal, oldVal) {

    if (newVal !== oldVal) {
        /* Using copy here so index view does not update as we edit */
        vm.selectedTask …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

5
推荐指数
1
解决办法
355
查看次数

还注入数据时,材料底部表组件中的异步数据不可用

当我通过材料底部表单[open][1]方法中的可选配置对象传递自定义数据时,我的组件数据 - 如果异步加载,则不可用/不呈现。如果我对组件数据进行硬编码或不将配置对象传递给 open 函数,则会加载组件数据。

team.component.ts - 包含底部工作表打开方法

export class TeamsComponent implements OnInit {
  teams: Team[];
  constructor(
    private teamService: TeamService,
    private messageService: MessageService,
    private bottomSheet: MatBottomSheet
  ) { }

    showActiveDivisionsInBottomSheet() {
        const ref = this.bottomSheet.open(ActiveDivisionsComponent, {
          data: { heading: 'Switch to new division' },
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

团队.component.html

<ul>
  <li *ngFor="let team of teams">
    {{ team.name }}
    <button (click)="showActiveDivisionsInBottomSheet()" mat-raised-button>{{ team.division.name }}</button>
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

active-divisions.component.ts - 传递到材质底片的组件

export class ActiveDivisionsComponent implements OnInit {
  divisions: Division[];
  constructor(
    @Inject(MAT_BOTTOM_SHEET_DATA) public …
Run Code Online (Sandbox Code Playgroud)

javascript typescript angular-material angular

4
推荐指数
1
解决办法
907
查看次数

将过滤器与分页 Angularjs 结合使用

我在组合过滤器的同时保持正确的分页时遇到了麻烦。

我正在使用自定义指令和 ng-repeat 来循环执行任务。

HTML:

<input type="text" ng-model="searchText" class="form-control search-icon float-right" placeholder="Type to filter">

<select ng-model="clientSearch">
    <option value="">All Clients</option>
    <option value="1">All Client 1</option>
    <option value="2">All Client 2</option>
    <option value="3">All Client 3</option>
</select>

<task-pane ng-repeat="task in filterList | start: (currentPage - 1) * perPage | limitTo: perPage | filter: {client_id : clientSearch || undefined}: true" task-data="task" modal-open="modalOpen(task.id)"></task-pane>

<uib-pagination total-items="filterList.length" items-per-page="20" next-text="Next" previous-text="Previous" ng-model="currentPage" max-size="maxSize" class="pagination-sm" boundary-link-numbers="true"></uib-pagination>
Run Code Online (Sandbox Code Playgroud)

和我的控制器 JS:

.controller('TasksArchiveController', ['$http', '$scope', '$filter', '$uibModal', function($http, $scope, $filter, $uibModal) {

$http.post('../assets/js/ajax/tasks_ajax_router.php', 'action=getArchive', config …
Run Code Online (Sandbox Code Playgroud)

javascript pagination angularjs

3
推荐指数
1
解决办法
4826
查看次数

AngularJS两个日期之间的自定义过滤器

我正在尝试实现一个自定义过滤器,它返回两个日期范围之间具有"completed_date"的项目.

但是,我发现我需要访问我的过滤器中的$ scope,以便从日期选择器中获取两个"选中"日期.

我不认为我可以使用ng-change功能,因为我有多个其他过滤器,因此需要确保它们一起工作.

<select ng-model="userSelect" ng-options="user.id as user.name in usersObj"></select>

<select ng-model="departmentSelect" ng-options="department.id as department.name in deptObj"></select>

<div ng-repeat="post in postsList | dateRange | filter: {user_id: userSelect || undefined}: true | filter: {department_id: departmentSelect || undefined}: true">...</div>
Run Code Online (Sandbox Code Playgroud)

两个日期选择器如下:

<input type="date" ng-model="to_date">
<input type="date" ng-model="from_date">
Run Code Online (Sandbox Code Playgroud)

我的控制器中的过滤器;

.filter('dateRange', function() {
        return function( items ) {
            var filtered = [];
            var from_date = Date.parse($scope.from_date);
            var to_date = Date.parse($scope.to_date);
            angular.forEach(items, function(item) {
                if(item.completed_date > from_date && item.completed_date < to_date) {
                    filtered.push(item);
                }
            }); …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

3
推荐指数
1
解决办法
1万
查看次数

网站上线前需要考虑的事项

早上.我已经完成了我的第一个网站,很快就会上线.

有很多PHP,因此我一直在xaamp/apache上工作/测试.

我只是想确认一旦网站上线后我的链接会发生什么 - 大多数都不包含http://前缀,只是'home.html'或'about_us.php'.

我假设一旦点击一个链接,apache会自动插入localhost前缀,那么当网站上线时它会是一样的吗?对于照片等我目前只有以下内容.

<img src="img/logo.png">
Run Code Online (Sandbox Code Playgroud)

这还够吗?

还有一件事 - 我很确定(显然我会检查!)一些PHP标头位置包含localhost前缀 - 我认为这需要删除吗?

非常感谢.

javascript php html5 css3

2
推荐指数
1
解决办法
106
查看次数

PHP数组夹具列表

我有一个阵列......

$teams=array('team_one','team_two','team_three');
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个(非常基本的)夹具列表.我正在寻找的输出可以在下面看到......

team_one v team_two
team_one v team_three
team_two v team_one
team_two v team_three
team_three v team_one
team_three v team_two
Run Code Online (Sandbox Code Playgroud)

我拥有的代码,显然只适用于第一个team_one灯具......

$count=count($teams)-1;
for ($i=0;$i<$count;$i++) {
$opposition=$i+1;
echo "$teams[0] v $teams[$opposition] <br>";
}
Run Code Online (Sandbox Code Playgroud)

我无法理解的是如何再次运行循环,但现在需要从team_two开始,并且能够循环返回数组,以便在第二次运行时不会遗漏team_one,并且team_one和team_two在第3次运行.

如果有更好的方法(我确信有),我真的很感激帮助.

php arrays

0
推荐指数
1
解决办法
126
查看次数

上传网站文件,index.html或home.html

即将上传我的第一个网站,并刚刚做了一些研究如何做到这一点,同时我等待我的包升级到包括mysql数据库.

快速提问 - 我是否需要将我的主页命名为"index.html"?,因此将我网站每个页面上的每个"home.html"链接更改为"index.html"?我也听过'index.htm',html和htm有什么区别?

根据我的阅读,这是一个很好的做法(好吧,更好的做法就是从头开始称之为!),还可以更改htaccess文件中的默认页面.这是正确的,如果是的话,是否存在缺点?

我不是在改变每个主页链接的任务,但如果它被认为是更好的选择,我会的.

谢谢

html javascript php mysql .htaccess

0
推荐指数
1
解决办法
1544
查看次数