标签: angularjs-scope

我可以使指令的被转换范围与父母相同吗?

说我有角度的一些HTML:

 <input type='text' ng-model='stuff' /> {{stuff}}
 <button class="primary" ng-click='dothestuff()'>Do the stuff</button>
Run Code Online (Sandbox Code Playgroud)

在控制器中有以下内容:

$scope.stuff = 'arf';
$scope.dothestuff = function () {
    $window.alert($scope.stuff);    
};
Run Code Online (Sandbox Code Playgroud)

这个代码将输入输入并在我按下按钮时输出它.

一切顺利.


但是现在我想创建一个包含div中元素的指令(因此它以深灰色背景显示).

我创建了一个指令,它将转换元素并用div包装它们:

testapp.directive('wrapper', function () {
    return {
        restrict: 'E',
        replace: true,
        scope: false,
        transclude: true,
        template: '<div style="background:#666"><div ng-transclude></div></div>'
    };
});
Run Code Online (Sandbox Code Playgroud)

但是,当然,该指令将为转换元素创建一个新范围.该输入元素不再是指东西财产击中按钮时会得到输出.

我可以通过引用$ parent来使它工作:

 <input type='text' ng-model='$parent.stuff' /> {{stuff}}
Run Code Online (Sandbox Code Playgroud)

但是,我不愿意.我想用我的新指令包装时尽可能保持html不受影响.

如何使transcluded元素直接引用父作用域?

这是一个有问题的jsFiddle.

javascript angularjs angularjs-directive angularjs-scope

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

angularjs:ng-点击<a>不工作,在<button>上工作

这是Javascript

    function gotoUrl($scope, $location, $http, $window) {
      $scope.setRoute = function (route) {
        $location.path(route);
    };
Run Code Online (Sandbox Code Playgroud)

我的代码是

      <ul class="nav navbar-nav navbar">
            <li><a href="#" data-ng-click="setRoute('summary')"><span
                    class="icon-bar-chart"></span> Summary</a></li>
            <li><a href="#
            " data-ng-click="setRoute('transactions')"><span
                    class="icon-reorder"></span>
                Transactions</a></li>
            <li><a href="#" data-ng-click="setRoute('budgets')"><span
                    class="icon-calendar"></span>
                Budgets</a></li>
        </ul>
Run Code Online (Sandbox Code Playgroud)

路由配置为

app.config(function ($routeProvider) {
    $routeProvider
        .when('/summary', {templateUrl: '../static/partials/summary.html', controller: 'SummaryController'})
        .when('/transactions', { templateUrl: '../static/partials/listTransaction.html', controller: 'TransactionsManagerController'})
        .when('/profile', {templateUrl: '../static/partials/profile.html', controller: 'ProfileController'})
        .when('/new', {templateUrl: '../static/partials/addTransaction.html', controller: 'TransactionAddController'})
        .when('/budgets', {templateUrl: '../static/partials/budgets.html'})
        .otherwise({redirectTo: '/summary'});
});
Run Code Online (Sandbox Code Playgroud)

当我点击时Transactions,它会带我去Summary

当我将代码更改<a>为<button>,它可以工作时,我在这里做错了什么?

javascript angularjs angularjs-scope

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

从隔离范围指令中的更改更改控制器变量值

所以我知道使用双向绑定,=在一个指令中,控制器的值可以传递给指令.但是,如何将隔离指令中的更改传递回控制器?

因此,例如,我有一个表单,其中有一个滑块,该滑块使用带有隔离范围的指令构建.初始值从控制器设置,然后使用隔离范围更改指令.

我正在尝试做的是当具有双向绑定的指令变量也发生变化时更改控制器的值.

有什么建议?

javascript validation angularjs angularjs-directive angularjs-scope

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

当输入名称为数组时,angularjs形式不能引用输入控件

使用angularjs测试表单验证时遇到问题

根据angularjs表格指南,

具有ngModel指令的输入控件包含NgModelController的实例.可以使用输入控件上的name属性将此类控件实例发布为表单实例的属性.

我在plunker上创建了测试代码,一切正常,直到我更改输入名称

<input type="number" name="age" ng-model="user.age" max="100" required>

<p>{{form1.age.$error}}</p>
Run Code Online (Sandbox Code Playgroud)

至

<input type="number" name="user[age]" ng-model="user.age" max="100" required>

<p>{{form1.user[age].$error}}</p>
Run Code Online (Sandbox Code Playgroud)

这是否意味着angular无法识别表单输入中的数组语法?

对我来说问题是我想保持正常的表单提交流程并且只使用angular进行表单验证,所以我需要将表单输入保持为数组以使用后端表单处理

forms validation angularjs angularjs-directive angularjs-scope

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

AngularJS:从范围调用$ watchGroup

如何调用$ watctGroup表单链接函数的指令.我有两个简单的范围元素(整数),我想成对观看它们.我认为$ watchGroup比使用$ watch('[element1,element2'],...)之类的东西更有效.

javascript angularjs angularjs-directive angularjs-scope

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

ng-click不从DOM中获取参数

我有以下代码:

<input id="id">
<button data-action="bea" ng-click="Create($('#id1')[0].value);" class="btn">Insert ID</button>
<button data-action="bea" ng-click="Create($('#id2')[0].value);" class="btn">Insert ID</button>
Run Code Online (Sandbox Code Playgroud)

在JS我有:

$scope.Create = function (id){
        if (id === undefined) {
            $scope.data = "You must specify an id";
        } else {
                $scope.data = data;
                console.log(data);
            });
        }
    };
Run Code Online (Sandbox Code Playgroud)

当调用进入Create函数时,id的值是未定义的.

如果我在Create函数的beginging中添加以下行,一切正常:

id = $('#id')[0].value;
Run Code Online (Sandbox Code Playgroud)

如果我发送一个常量值,它可以工作:

<button data-action="bea" ng-click="Create('SomeID');" class="btn">Insert ID</button>
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况,如何在不将价值线放入方法的情况下做到这一点?

谢谢

html javascript angularjs angularjs-scope angularjs-ng-click

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

控制器构造函数在Angular中执行多次

所以我的问题是Controller构造函数执行多次.如果我有2 Directives与特定关联,Controller那么它运行2 + 1,如果3 Directives,然后3 + 1...等等.如果我在该控制器中有一个ajax请求来获取数据,那么它会运行那么多次并不是真正的必要...

为什么会这样?我非常担心它会使所有那些额外的不必要的ajax请求......

HTML:

 <span ng-controller="MenuController as MenuCtrl">
    <main-menu></main-menu>
 </span>
Run Code Online (Sandbox Code Playgroud)

控制器:

  var howManyTimes = 0;
  angular.module("shredkit", ["myDirectives"])

  .controller("MenuController", function(){
    ++howManyTimes;
    console.log("HOW MANY TIMES? THAT MANY: " + howManyTimes )
  })
Run Code Online (Sandbox Code Playgroud)

指示:

angular.module("myDirectives", [])

  .directive("mainMenu", function(){
    return{
      restrict:"E", // type of directive - 'E' - element
      templateUrl:'templates/main-menu.html',
      controller:"MenuController",
      controllerAs: "MenuCtrl"
    };
  })
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angularjs-directive angularjs-scope

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

如何在Angular UI-Grid中获取列页脚数据?

例如,在本教程中,是否有任何方法可以在列页脚中获取数据?我想在其他地方展示总数. 在此输入图像描述 提前致谢.

javascript angularjs angularjs-directive angularjs-scope angular-ui-grid

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

无法读取未定义错误的属性"推送"?

我正在尝试学习角度js.我能够得到输出.但是在控制台上我收到此错误.如何删除此错误?

在此输入图像描述

 <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <script type="application/javascript" src="ionic.js"></script>
    </head>
    <body ng-app="">
    {{3+8}}

    </body>
    </html>
Run Code Online (Sandbox Code Playgroud)

我只是使用angular添加两个数字我能够得到预期的结果,但在控制台上得到这个错误.

javascript angularjs angularjs-directive angularjs-scope ionic-framework

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

Angular指令访问控制器 - 奇怪的'ungoogled'消息

我正在尝试编写一个元素指令,我将其附加到控制器,以实现类似排序的行为.这是指令

.directive('sorting', function () {
        return {
            restrict: 'E',
            scope: false, // I know I can omit this with no effect
            template: function (elem, attr) {
                return '<div><a href ng-click="setsort('+"'"+attr.sortkey+"'"+')">'+attr.headtext+'</a></div>'+
                      '<div ng-show="sortfield=='+"'"+attr.sortkey+"' || sortfield='-"+attr.sortkey+"'"+
                      '" ng-class="{'+"'sortreverse':sortreverse}"+'">&#9650;</div>';
                  }
            }
        });
Run Code Online (Sandbox Code Playgroud)

setsort(sortkey),sortfield并且sortreverse属于控制器的范围.

预期的行为是,&#9650;只有在为指定元素选择了排序时才应显示caret().

排序按计划工作,但插入符号显示在所有排序列中,我得到一个奇怪的错误消息,我没有找到任何可用的反馈.

错误说:

Error: [$parse:lval] Trying to assing a value to a non l-value
http://errors.angularjs.org/1.4.5/$parse/lval
minErr/
[....a whole stacktrace ...]
"<div ng-show="sortfield=='yn_equivalent' || sortfield='-yn_equivalent'" ng-class="{'sortreverse':sortreverse}">"
Run Code Online (Sandbox Code Playgroud)

有趣的事实:错误的第一行实际上是由angularjs拼写错误的(应该assign代替assing)

当被召唤时,最后一行是指令生成的输出的一部分:

<sorting …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-directive angularjs-scope

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