小编jdp*_*jdp的帖子

AngularJS - 在更改模型值的指令中,为什么我必须调用$ render?

我制作了一个指令,旨在使用ngModel指令附加到元素.如果模型的值匹配,则应将值设置为先前的值.在我的例子中,我正在寻找"foo",并将其设置回前一个,如果这是输入的内容.

我的单元测试在这方面很好,因为他们只关注模型值.但是在实践中,当"回放"触发时,DOM不会更新.我们在这里最好的猜测是设置old == new可以防止脏检查发生.我逐步完成了$ setViewValue方法,它看起来正在做它应该做的事情.但是,在我设置新值之后显式调用ngModel.$ render()之前,它不会更新DOM(以及您在浏览器中看到的内容).它工作正常,但我只想看看是否有更合适的方法.

代码在下面,这里有一个相同的小提琴.

angular.module('myDirective', [])
    .directive('myDirective', function () {
    return {
        restrict: 'A',
        terminal: true,
        require: "?ngModel",
        link: function (scope, element, attrs, ngModel) {
            scope.$watch(attrs.ngModel, function (newValue, oldValue) {
                //ngModel.$setViewValue(newValue + "!");   

                if (newValue == "foo")
                {
                    ngModel.$setViewValue(oldValue);   
                    /* 
                        I Need this render call in order to update the input box; is that OK?
                        My best guess is that setting new = old prevents a dirty check which would trigger $render()
                    */ …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-directive

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

在循环中创建没有键的数组

这可能是一个大脑放屁,因为它是一个较晚的日子,但我被困在这里.

我需要从选择框中获取$ _POST值.(它是一个数组),并将其转换为一个没有任何键的简单数组.

这是项目中的print_r:

Array ( [0] => 19 [1] => 18 [2] => 21 )

问题是,我需要一个看起来像这样的数组:

Array(19,18,21)

每当我尝试通过表单字段foreach()时,我必须做这样的事情:

$row[] = $val;

但这给我留下了数字索引.

我错过了什么?

谢谢.

php arrays

18
推荐指数
2
解决办法
5万
查看次数

默认情况下在PHPUnit中运行单个测试套件

我的PHPUnit配置文件有两个测试套件,unitsystem.当我运行测试运行器时vendor/bin/phpunit,它会在两个套件中运行所有测试.我可以使用testsuite标志来定位单个套件:vendor/bin/phpunit --testsuite unit但是我需要将测试运行器配置为unit默认情况下仅运行套件,并且integration仅在使用testsuite标志进行专门调用时运行.

我的配置:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true">
  <testsuites>
    <testsuite name="unit">
      <directory>tests/Unit</directory>
    </testsuite>
    <testsuite name="integration">
      <directory>tests/Integration</directory>
    </testsuite>
  </testsuites>
  <filter>
    <whitelist>
      <directory suffix=".php">src</directory>
    </whitelist>
  </filter>
  <logging>
    <log type="coverage-clover" target="build/clover.xml"/>
  </logging>
</phpunit>
Run Code Online (Sandbox Code Playgroud)

php phpunit unit-testing

14
推荐指数
2
解决办法
2428
查看次数

检查IonCube Loader是否已安装的最佳方法

我正在使用以下代码:

<?php
if(extension_loaded("IonCube Loader")) {     
  // Yes
}
else {
  // No
}
?>
Run Code Online (Sandbox Code Playgroud)

我只是担心这对于启用了IonCube的每台服务器都不起作用.它似乎很标准,但我以前从未需要检查.这是检查的最佳方式,还是我应该使用更好的方法?

php ioncube

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

WordPress插件开发中的Composer命名空间冲突

我遇到了一个完全可预测但令人难以置信的烦人且难以解决的问题.

我一直在研究用于开发WordPress插件的PHP框架.它使用Composer进行依赖关系管理.当然,问题是如果你在同一个WordPress安装中有两个我的框架实例,你有两个供应商文件夹,以及框架所需的任何软件包的两个副本.这会导致错误.

该框架作为一个单独的插件运行,然后由构建在其上的任何应用程序/插件继承.

将供应商文件夹移动到核心框架文件夹?

问题:我不知道如果我有两个composer.json文件和两个写入同一供应商文件夹并使用相同自动加载器的composer.phar文件会发生什么.大概这不会是好事.除此之外,它没有解决与作曲家包冲突的问题,可以被我正在尝试处理的任何其他脚本或插件使用.

所以我被卡住了.这是一个可以解决的问题,还是仅仅是PHP固有的问题?

php wordpress composer-php

10
推荐指数
2
解决办法
899
查看次数

jQuery UI Autocomplete .result不是一个功能问题

我已经做了一些搜索,这似乎是一个不常见的问题,但是没有一个解决方案似乎对我有用.

我尝试了几种不同的方法:

jQuery(document).ready(function(){
    jQuery( "#on-good-terms-add-term" ).autocomplete({
        source: ongoodtermsavailableTags,
    });

    jQuery( "#on-good-terms-add-term" ).result(function(event, data, formatted) { alert(data); });
});
Run Code Online (Sandbox Code Playgroud)

jQuery(document).ready(function(){
    jQuery( "#on-good-terms-add-term" ).autocomplete({
        source: ongoodtermsavailableTags,
    }).result(function(event, data, formatted) {
        alert(data);
    });
Run Code Online (Sandbox Code Playgroud)

});

两者都给我相同的控制台错误.非常感谢任何帮助.谢谢

jquery jquery-ui jquery-ui-autocomplete

7
推荐指数
1
解决办法
6947
查看次数

AngularJS带空格的自定义指令参数

我有一个自定义指令用于标准化日期输入并格式化它们以匹配我的(有些奇怪的)API要求.用于调用它的标记如下:

<date-input date-id="birthDate" date-label="Date Of Birth" ng-model="client.dateOfBirth"></date-input>
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Syntax Error: Token 'Of' is an unexpected token at column 6 of the expression [Date Of Birth] starting at [Of Birth].
Run Code Online (Sandbox Code Playgroud)

当我删除空格(即date-label="DateOfBirth"它工作正常.)

如何在指令属性中允许空格?

指令:

directives.directive('dateInput', [function() {
  var link = function(scope, element, attrs, model) {
    scope.dateLabel = attrs.dateLabel;
    scope.dateId = attrs.dateId;

    var dateObjectPre = moment(scope.dateObject);
    scope.dateObjectPre = dateObjectPre.format('MMDDYYYY');

    scope.update = function() {
      var dateObject;
      if(angular.isDefined(scope.dateObjectPre)) {
        dateObject = moment(scope.dateObjectPre, 'MMDDYYYY');
      }

      if (dateObject && dateObject.isValid()) {
        scope.dateObject = dateObject.format('YYYY-MM-DD');
      } …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angularjs-directive

6
推荐指数
1
解决办法
2882
查看次数

使用Google Analytics跟踪AJAX请求

我正在改变网站的一大部分,以使用jQuery Address'深度链接AJAX功能.我正在使用URI之类的东西mysite.com/#!/page1/subpage/.

我已经阅读了关于使用该_gaq.push()功能跟踪流量的一些信息,但我想知道是否有可能以更传统的方式进行...

每个AJAX请求调用一个PHP函数,该函数构建一个页面并将其返回到<HTML>包装器中,这样我就可以轻松定义自定义页面标题等等.

如果我将分析代码放在该页面上,jQuery调用该页面会触发它来跟踪访问吗?

ajax jquery google-analytics jquery-address

5
推荐指数
2
解决办法
8441
查看次数

使用基于AngularJS的其他字段的输入,使用数据将选项填充到选择中

我有一张带地址的表格.我收集的第一个地址字段是邮政编码.输入邮政编码后,自定义指令将查询外部API并获取包含城市,州,县和该州所有县的列表的对象.

在邮政编码字段中,我已经在分配给City,State和County输入字段的模型中传递了属性.该指令接受这些并填充scope变量,以便每个变量的值同步.

我的问题出在县选择框上.我需要首先使用州中所有县的列表填充该字段(同样,所有可用选项都由API响应给出).填充字段后,我需要设置该值.

设置很简单.有用.我无法弄清楚如何使用可用选项填充该字段.

  • 我不能使用元素ID,因为我需要此指令可以重复使用此表单中的多个地址.
  • 我不能使用ng-options,至少在我的视图中没有,因为在输入邮政编码之前我没有填充数据.

这是我的表格的一小部分,显示了邮政编码和县字段:

<div class="form--row">
  <div class="form--col5">
    <label class="form--label" for="nbZip">Zip</label>
    <input
      id="nbZip"
      class="form--input"
      type="text"
      ng-model="data.ClientDetails.zip"
      ng-required="data.Client == 'true'"
      blur="update()"
      ziplookup
      zip-city="data.ClientDetails.city"
      zip-state="data.ClientDetails.state"
      zip-county="data.ClientDetails.county"
    >
  </div>

<!-- First Client NB County -->
<div class="form--row">
  <div class="form--col5">
    <label class="form--label" for="nbCounty">County</label>
    <select class="form--input" id="nbCounty" ng-model="data.ClientDetails.county" ng-required="data.Client == 'true'" change="update()">
      <!-- generate county list! -->
    </select>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我的指令:( ZipCode是我注入指令的自定义服务.)

directives.directive(
'ziplookup',
['ZipCode',
function (ZipCode) {
  var scope
    , element
    , zipData;

  var getZipData = function (event) { …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

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

如何在shell中获取当前的git分支

我正在尝试编写一个shell脚本,如果当前的git分支与预定义的值不匹配,该脚本应该失败.

if $gitBranch != 'my-branch'; then
   echo 'fail'
   exit 1
fi
Run Code Online (Sandbox Code Playgroud)

不幸的是,我的shell脚本编写技巧还不尽如人意:如何在我的变量中获取当前的git分支?

bash shell

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