小编Mat*_*erg的帖子

输入自动对焦属性

我的代码中有地方,我有这个:

<input data-ng-disabled="SOME_SCOPE_VARIABLE" />
Run Code Online (Sandbox Code Playgroud)

我也希望能够像这样使用它:

<input data-ng-autofocus="SOME_SCOPE_VARIABLE" />
Run Code Online (Sandbox Code Playgroud)

甚至更好,模仿ng-style的完成方式:

<input data-ng-attribute="{autofocus: SOME_SCOPE_VARIABLE}" />
Run Code Online (Sandbox Code Playgroud)

当前版本的AngularJS中是否存在这种情况?我注意到代码中有一个BOOLEAN_ATTR,它获取AngularJS支持的所有attr.我不想修改它,因为害怕更改版本而忘记更新.

angularjs

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

无法读取属性'$$ nextSibling'的null

当我销毁自己的示波器时,我的程序中不断出现此错误.我跟踪到了这个while while循环中的角度:

if (!(next = (current.$$childHead || (current !== target && current.$$nextSibling)))) {
    while(current !== target && !(next = current.$$nextSibling)) {
        current = current.$parent;
    }
}
Run Code Online (Sandbox Code Playgroud)

我还设法在一个jsFiddle中复制它:http://jsfiddle.net/kEyqz/1/

它很容易设置,在一个元素上我点击一个点击事件然后$广播点击它然后是$ apply.

在一个单独的指令(带有子范围)中,我会监听该事件,如果我看到它,我会破坏子范围.这样做会产生错误:

Uncaught TypeError: Cannot read property '$$nextSibling' of null 
Run Code Online (Sandbox Code Playgroud)

这只是我在代码中尝试完成的一个小例子.

控制台记录在current = current之前.$ parent导致范围没有$ parent(设置为null).

我可以添加这些行:

if(!current){
    break;
}
Run Code Online (Sandbox Code Playgroud)

在当前=当前.$ parent之后,但如果我切换角度版本,我必须保持它(不理想)

angularjs

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

angular-ui-router中的三级嵌套路由

我试图让我的嵌套路线工作,但现在给我两天的艰难时间:(

一级工作正常

两个级别工作正常

三个级别不起作用!

任何人都可以帮帮我吗?

提前致谢

angular.module('settings', []).config(['$stateProvider', '$routeProvider', '$urlRouterProvider', function($stateProvider, $routeProvider, $urlRouterProvider) {
    $stateProvider
        .state('settings', {
            url: '/settings',
           template:"Settings",
            controller: function(){
                console.log('settings');
            }
        }).
        state('settings.branch', {
            url: '/{branchId:[0-9]{1,8}}',
            template:"Branch",
            controller: function(){
                console.log('branch');
            }
        }).
        state('settings.branch.prop', {
            url: '/prop',
            template:"Property",
            controller: function(){
                console.log('property');
            }
        });
}]);
Run Code Online (Sandbox Code Playgroud)

'/ settings'正在运行

'/ settings/1234'正在运行

'/ settings/1234/prop'不起作用,总是返回普遍状态'分支'

angularjs angular-ui

14
推荐指数
1
解决办法
5044
查看次数

销毁范围破坏的指令/子范围

我有一个指令,编译另一个指令并将其附加到具有相同范围的主体.这与"父"指令的位置不同.

当父指令被销毁时,有一些方法可以让子指令和范围也被销毁吗?我问,因为在检查DOM后,子指令仍然存在.

目前我挂钩了父母$ destroy事件但是好奇它是否可以自动处理.

jsFiddle: http ://jsfiddle.net/FPx4G/1/

当你切换父母的时候,孩子就呆在那里,但是我想要被摧毁.最好的方法是什么?

HTML:

<div ng-app="app">
    <div ng-controller="ParentCtrl">
        <button data-ng-click="toggleParent()">Toggle Parent</button>
        <div data-ng-switch data-on="displayDirective">
            <div data-ng-switch-when="true">
                <div class="parentDirective">Parent Directive</div>
            </div>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

angular.module('app', [])
    .directive("parentDirective", function($compile){
        return {
            restrict: 'C',
            link: function(scope, element){
                var secondDirective = angular.element(document.createElement("div"));
                secondDirective.addClass("childDirective");

                document.body.appendChild(secondDirective[0]);

                $compile(secondDirective)(scope);
            }
        }
    })
    .directive("childDirective", function(){
        return {
            restrict: 'C',
            template: '<div>Child Directive</div>',
            link: function(scope, element){
                scope.$on("destroy", function(){
                   alert(1); 
                });
            }
        }
    });


function ParentCtrl($scope){
   $scope.displayDirective = true;
    $scope.toggleParent = function(){
        $scope.displayDirective = …
Run Code Online (Sandbox Code Playgroud)

html angularjs

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

使用带有transclude的指令编译时重复的属性

JsFiddle的问题:http://jsfiddle.net/UYf7U/

在指令编译中使用angularJs transclude时,它将复制任何属性属性.即

<a class="myClass">my link</a>
Run Code Online (Sandbox Code Playgroud)

会变成

<a class="myClass myClass">my link</a>
Run Code Online (Sandbox Code Playgroud)

同样,使用ngClick时

<a ng-click="myFunction()"> my link</a>
Run Code Online (Sandbox Code Playgroud)

会变成

<a ng-click="myFunction() myFunction()"> my link</a>
Run Code Online (Sandbox Code Playgroud)

小提琴演示了这一点,不幸的是它崩溃了.这是我正在尝试实施的简化版本.

有没有解决的办法?我已将问题发布到github:https://github.com/angular/angular.js/issues/2576

单击Hello时,单击"clicked"应显示在警报中.

angularjs

6
推荐指数
2
解决办法
2608
查看次数

当我指定确切的气体限制时,为什么会出现超出气体限制的错误?

我正在使用松露部署合同,当我指定气体限制作为我想用于交易的气体时,我总是得到超过气体限制的错误.为什么会这样?

编辑我要做的是将crypto kitties KittyCore.sol合同部署到我的本地devnet.我正在使用松露来部署它.

从另一个页面,如何在使用继承时将松露合同部署到开发网络?,我发现由于存在合同层次结构,我需要按顺序部署合同.我使用了这种技术,并且我能够部署7个合同中的4个,第五个,KittyAuction,给出以下错误:合同代码无法存储,请检查您的燃气量

下面发布的是我的松露部署脚本

var KittyCore = artifacts.require("KittyCore");
var KittyMinting = artifacts.require("KittyMinting");
var KittyAuction = artifacts.require("KittyAuction");
var KittyBreeding = artifacts.require("KittyBreeding");
var KittyOwnership = artifacts.require("KittyOwnership");
var KittyBase = artifacts.require("KittyBase");
var KittyAccessControl = artifacts.require("KittyAccessControl");
var SaleClockAuction = artifacts.require("SaleClockAuction");

module.exports = function (deployer) {
    deployer.deploy(KittyAccessControl).then(function () {
        return deployer.deploy(KittyBase).then(function () {
            return deployer.deploy(KittyOwnership).then(function () {
                return deployer.deploy(KittyBreeding).then(function () {
                    return deployer.deploy(KittyAuction, {
                        gas: 400000
                    }).then(function () {
                        return deployer.deploy(KittyMinting).then(function () {
                            return deployer.deploy(KittyCore);
                        })
                    })
                })
            })
        })
    }); …
Run Code Online (Sandbox Code Playgroud)

ethereum solidity truffle

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

单独html的多次转换

我想将多个部分转换成一个指令.以下是我如何设置它的想法.

<div id="content" class="mainDirective">
    <div class="sub">
        <ul>
            <li>Everyone</li>
            <li>Development (3)</li>
            <li>Marketing</li>
        </ul>
    </div>
    <div class="subButtons">
        <span class="csStIcon add" data-ng-click="addTeam()"></span>
        <span class="csStIcon edit" data-ng-click="editTeam()"></span>
        <span class="csStIcon delete" data-ng-click="deleteTeam()"></span>
    </div>
    <div class="main">
        <table>
            <thead>
                <tr><td>Name</td><td>Last name</td><td>Department</td></tr>
            </thead>
            <tbody>
                <tr><td>Lorem</td><td>Ipsum</td><td>Development</td></tr>
                <tr><td>Lorem</td><td>Ipsum</td><td>Development</td></tr>
                <tr><td>Lorem</td><td>Ipsum</td><td>Development</td></tr>
            </tbody>
        </table>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我的指令模板:

<div>
    <div class="left">
        <div data-ng-multi-transclude="sub"></div>
        <div class="bottomOptions">
            <span class="csStIcon collapse"></span>
            <div data-ng-multi-transclude="subButtons"></div>
        </div>
    </div>
    <div class="right">
        <div data-ng-multi-transclude="main"></div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

最后的输出:

<div>
    <div class="left">
        <div class="sub">
            <ul>
                <li>Everyone</li>
                <li data-ng-click="loadDepartment()">Development (3)</li>
                <li data-ng-click="loadDepartment()">Marketing</li>
            </ul>
        </div>
        <div …
Run Code Online (Sandbox Code Playgroud)

html angularjs

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

关闭电子邮件验证

我有以下一段 html/angular

<input type="email" data-ng-model="myEmailVar" />
{{ myEmailVar }}
Run Code Online (Sandbox Code Playgroud)

现在的问题是 angular 有一个电子邮件自动验证器,除非它正确通过,否则不会设置 myEmailVar。因此,例如,如果我输入“名称”,则不会设置 myEmailVar。你可以在这里看到:http : //jsfiddle.net/bFVsW/(输入test这个词,然后输入test@test.test)

现在,我想运行我自己的验证,但也支持移动。如果我使用 type="email" 某些移动浏览器会切换键盘布局以使输入地址更容易(例如 @ 符号)。所以我无法将其切换为 type="text"。我想做的是覆盖角度电子邮件验证器,或者完全关闭它,因为我将处理我自己的验证。那可能吗?

angularjs

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

使用输入类型日期时ngModel不更新

我不确定这是不是一个错误,但这是我想要完成的.我只关心谷歌浏览器,因为这是出于调试目的.我想使用html5输入类型日期并让它更新模型.问题是,如果我从弹出角度选择一个日期角度不更新它.如果我改为使用箭头来运行日期,则更新它.还有其他方法可以让ngModel更新吗?

<div ng-app>
     <input type="date" data-ng-model="date" style="width:200px;" />
     <br>
     {{ date }}
</div>
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴:http://jsfiddle.net/rtCP3/55/

google-chrome angularjs

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

将 n 个数组合并为一个数组

假设我有一个对象,它的值是这样的数组:

obj = {
    'key1': [1,2],
    'key2': [3,4],
    'key3': [5,6],
}
Run Code Online (Sandbox Code Playgroud)

如何使用 concat 将对象的所有数组合并为一个数组。对象的键数当然是动态的,但它至少会有一个实例所需的输出是这样的:

[1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)

javascript arrays concatenation object

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

正确使用/实现服务的方法

我们试图锁定使用服务的最佳方法,并提出了三种可能性.这是一个更大问题的一个小得多的例子,但我希望它得到了重点.这些示例中的服务非常简单:

.service("markerService", function(){
    var self = this;
    self.showMarkers = false;
    self.toggleMarkers = function(value){
        self.showMarkers = angular.isDefined(value) ? !!value : !self.showMarkers;  
    };
})
Run Code Online (Sandbox Code Playgroud)

编译后的dom也非常简单:

<div ng-controller="ParentCtrl" class="ng-scope">
    <div class="assetsDirective">
        <div>
            <div class="assetDirective">Hidden Name: 1</div>
            <div class="assetDirective">Hidden Name: 2</div>
        </div>
    </div>
    <div class="toolBarDirective">
        <div>
            <button>Toggle Markers</button>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我们提出的选择是:

  1. 选项A:http://jsfiddle.net/nxhn31yv/(资产和工具栏都有服务)
  2. 选项B:http://jsfiddle.net/oszop5j4/(资产有服务,工具栏的父级有服务和工具栏更新它)
  3. 选项C:http://jsfiddle.net/a7nf31d3/(所有人的父母都有服务,将其传递下去)

第一个将服务器注入两个兄弟控制器,其中一个调用切换功能来更新存储在该服务中的值.

第二个选项是将它注入到具有父/子关系的两个服务中.父项将值传递给一个可以更新它的子项(如ngmodel),而带有注入服务的子控制器将其值传递给使用它的子项.

第三个选项让父母将值一直传递给两个兄弟姐妹,而兄弟姐妹又将一个兄弟姐妹传递给它的孩子.

哪些符合如何实施服务的角度方法?

angularjs

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