GVKun编程网logo

在angularjs的ng-click函数中获取元素的属性(angular ng-click)

23

本文将带您了解关于在angularjs的ng-click函数中获取元素的属性的新内容,同时我们还将为您解释angularng-click的相关知识,另外,我们还将为您提供关于angularjs–Ang

本文将带您了解关于在angularjs的ng-click函数中获取元素的属性的新内容,同时我们还将为您解释angular ng-click的相关知识,另外,我们还将为您提供关于angularjs – Angular CLI:无法读取null的属性’config’、angularjs – Angular JS – 将ng-click $index值传递给控制器函数,然后返回另一个视图、angularjs – ngClick在Angular 1.5.5组件中未触发的事件、angularjs – 使用Angular,我如何将click事件绑定到元素上,并单击后,向下滑动一个兄弟元素?的实用信息。

本文目录一览:

在angularjs的ng-click函数中获取元素的属性(angular ng-click)

在angularjs的ng-click函数中获取元素的属性(angular ng-click)

我有一个如下所示的span标签,单击该标签会在控制器中调用一个函数。

HTML

<divng-repeat="event in events">    <div>        <spandata={{event.id}} ng-click="deleteEvent()">        </span>    </div></div>

控制者

$scope.deleteEvent=function(){    console.log(this);}

我需要在控制器功能的data属性中获取值。我尝试使用此关键字和$ event; 没人工作。

请帮忙。

答案1

小编典典

尝试将其直接传递给ng-click函数:

<div>    <spandata="{{event.id}}"          ng-click="deleteEvent(event.id)"></span></div>

然后它应该在您的处理程序中可用:

$scope.deleteEvent=function(idPassedFromNgClick){    console.log(idPassedFromNgClick);}

这是一个例子

angularjs – Angular CLI:无法读取null的属性’config’

angularjs – Angular CLI:无法读取null的属性’config’

最近我的应用程序从Angular 2.3.0升级到Angular 4.0.3.在此过程中还升级了angular-cli.如果项目克隆到新目录,则抛出:

Cannot read property ‘config’ of null TypeError: Cannot read property
‘config’ of null
at Class.run (/Users/hyadav/Documents/projects/web-app/node_modules/@angular/cli/tasks/build.js:16:56)
at Class.run (/Users/hyadav/Documents/projects/web-app/node_modules/@angular/cli/commands/build.js:143:26)
at Class. (/Users/hyadav/Documents/projects/web-app/node_modules/@angular/cli/ember-cli/lib/models/command.js:134:17)
at process._tickCallback (internal/process/next_tick.js:109:7)

的package.json

"scripts": {
    "ng": "ng","start": "ng serve","build": "ng build","test": "ng test","lint": "ng lint","e2e": "ng e2e"
  },"private": true,"dependencies": {
    "@angular/animations": "^4.0.3","@angular/cli": "^1.0.1","@angular/common": "^4.0.3","@angular/compiler": "^4.0.3","@angular/compiler-cli": "^4.0.3","@angular/core": "^4.0.3","@angular/forms": "^4.0.3","@angular/http": "^4.0.3","@angular/material": "^2.0.0-beta.3","@angular/platform-browser": "^4.0.3","@angular/platform-browser-dynamic": "^4.0.3","@angular/platform-server": "^4.0.3","@angular/router": "^4.0.3","core-js": "^2.4.1","hammerjs": "^2.0.8","rxjs": "^5.2.0","typescript": "^2.2.2","zone.js": "^0.8.4"
  },"devDependencies": {
    "@angular/cli": "^1.0.1","@angular/compiler-cli": "^2.4.0","@types/jasmine": "2.5.38","@types/node": "~6.0.60","codelyzer": "~2.0.0","jasmine-core": "~2.5.2","jasmine-spec-reporter": "~3.2.0","karma": "~1.4.1","karma-chrome-launcher": "~2.0.0","karma-cli": "~1.0.1","karma-coverage-istanbul-reporter": "^0.2.0","karma-jasmine": "~1.1.0","karma-jasmine-html-reporter": "^0.2.2","protractor": "~5.1.0","ts-node": "~2.0.0","tslint": "~4.4.2","typescript": "~2.2.2"
 }
这是Angular v5之前的工作解决方案,因为在v6内部,文件的位置更改为angular.json,并且还更改了内容

创建一个名为.angular-cli.json的新文件并插入:

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json","project": {
    "name": "PROJECT_NAME"
  },"apps": [
    {
      "root": "src","outDir": "dist","assets": [
        "assets","favicon.ico"
      ],"index": "index.html","main": "main.ts","polyfills": "polyfills.ts","test": "test.ts","tsconfig": "tsconfig.app.json","testTsconfig": "tsconfig.spec.json","prefix": "app","styles": [
        "styles.css"
      ],"scripts": [],"environmentSource": "environments/environment.ts","environments": {
        "dev": "environments/environment.ts","prod": "environments/environment.prod.ts"
      }
    }
  ],"e2e": {
    "protractor": {
      "config": "./protractor.conf.js"
    }
  },"lint": [
    {
      "project": "src/tsconfig.app.json"
    },{
      "project": "src/tsconfig.spec.json"
    },{
      "project": "e2e/tsconfig.e2e.json"
    }
  ],"test": {
    "karma": {
      "config": "./karma.conf.js"
    }
  },"defaults": {
    "styleExt": "css","component": {}
  }
}

如果从angular-cli创建新项目,您还可以找到此json的副本.

angularjs – Angular JS – 将ng-click $index值传递给控制器函数,然后返回另一个视图

angularjs – Angular JS – 将ng-click $index值传递给控制器函数,然后返回另一个视图

我将ng-click $index值传递给我的控制器,然后使用它在ng-repeat中的值来表示我的数据,但得到的错误表明“ReferenceError:myChoice未定义”

我的观点(months.html)有一个所有月份的列表,选中后,它会将值传递给控制器​​.

<ion-list ng-repeat="time in times.months" ng-click="getMonthId($index)">
  <ion-itemhref="#/dmtimes">{{ time.monthId }} - {{ time.MonthName }</ion-item>
</ion-list>

视图输出显示:

1 - Jan
2 - Feb 
3 - Mar
etc

我的控制器有以下提取代码:

.controller('dailyMeetingTimesCtrl',function($scope,MeetingNames,$ionicLoading,$firebase,$firebaseArray) {

  $scope.getMonthId = function (monthId) {
    alert("you selected: " + monthId); // this works fine.
    $scope.myChoice = monthId; // ReferenceError: myChoice is not defined

    console.log(myChoice);
  }
})

在我的第二个视图(displayMeetingTimes.html)中,我想显示所选月份的会议详细信息,时间等.代码如下:

<ion-view title="Daily Meeting Times">
  <ion-content ng-controller="dailyMeetingTimesCtrl"overflow-scroll="true" padding="true">
    <ion-list>

      <ion-item ng-repeat="time in times.months(myChoice).days">
        <span>{{myChoice}}</span>
        Meeting Name:   {{ time.meetingName }}<br />
        Star Time:  {{ time.startTime }}<br />
        Finish Time:    {{ time.finishTime }}<br />
      </ion-item>         
    </ion-list>

  </ion-content>
</ion-view>

当我运行应用程序时,’myChoice’的值没有传递到第二个视图,因此错误“ReferenceError:myChoice未定义”

请告诉我哪里出错了?谢谢.

解决方法

如果要使用ng-repeat传递$index,则需要指定它.所以你的HTML应该如下:

<ion-list ng-repeat="time in times.months track by $index" ng-click="getMonthId($index)">
  <ion-itemhref="#/dmtimes">{{ time.monthId }} - {{ time.MonthName }
  </ion-item>
</ion-list>

其次,你得到ReferenceError的原因:myChoice没有被定义,因为你从未初始化一个名为myChoice的变量.但是你有一个名为$scope.myChoice的变量.
因此,您应该执行以下操作以在控制台中显示变量:

console.log($scope.myChoice);

angularjs – ngClick在Angular 1.5.5组件中未触发的事件

angularjs – ngClick在Angular 1.5.5组件中未触发的事件

为什么不单击下面模板中描述的按钮按预期工作? This blog post does the exact same thing.

'use strict';

angular.module('core').component('foo',{
    bindings: {
        items: '<',},controller: function() {
        function fire() {
            console.log('hello');
        }
    },template: "<button type='button' ng-click='$ctrl.fire();'>Test</button>"
});

编辑:为问题添加了更多清晰度

解决方法

功能触发器未暴露在控制器上.

this.fire = fire;

angularjs – 使用Angular,我如何将click事件绑定到元素上,并单击后,向下滑动一个兄弟元素?

angularjs – 使用Angular,我如何将click事件绑定到元素上,并单击后,向下滑动一个兄弟元素?

我正在使用Angular,而我正在做一些我通常使用jQuery的东西.

我想将一个点击事件绑定到一个元素,然后点击,将一个兄弟元素向下滑动.

这就是jQuery的样子:

$('element').click(function() {
    $(this).siblings('element').slidetoggle();
});

使用角度我在我的标记中添加了一个带有功能的ng-click属性:

<div ng-click="events.displaySibling()"></div>

这就是我的控制器的样子:

app.controller('myController',['$scope',function($scope) {

    $scope.events = {};

    $scope.events.displaySibling = function() {
        console.log('clicked');
    }

}]);

到目前为止,这是按预期工作,但我不知道如何完成幻灯片.任何帮助非常感谢.

更新

我已经用指令取代了我所做的一切.

我的标记现在看起来像这样:

<div></div>

我已经删除了我在控制器中的内容,并创建了一个新的指令.

app.directive('myevent',function() {
    return {
        restrict: 'C',link: function(scope,element,attrs) {
            element.bind('click',function($event) {
                element.parent().children('ul').slidetoggle();
            });
        }
    }
});

但是,我仍然无法使幻灯片切换工作.我不相信Slidetoggle()是由Angular支持的.有什么建议么?

我不太清楚你正在谈论的行为,但我会鼓励你以稍微不同的方式思考.少jQuery,更有角度.

也就是说,有你的html这样的东西:

<div ng-click="visible = !visible"></div>
<div ng-show="visible">I am the sibling!</div>

然后,您可以使用ng-animate中的构建来制作兄弟幻灯片 – yearofmoo有一个非常好的概述如何$动画作品.

这个例子很简单,你可以把显示逻辑放在html中,但是我会鼓励你把它放在控制器里,就像这样:

<div ng-click="toggleSibling()"></div>
<div ng-show="visible"></div>

控制器:

app.controller('SiblingExample',function($scope){

  $scope.visible = false;

  $scope.toggleSibling = function(){
    $scope.visible = !$scope.visible;
  }

});

这种组件也是一个指令的主要候选者,它将整齐地整理出来.

今天关于在angularjs的ng-click函数中获取元素的属性angular ng-click的分享就到这里,希望大家有所收获,若想了解更多关于angularjs – Angular CLI:无法读取null的属性’config’、angularjs – Angular JS – 将ng-click $index值传递给控制器函数,然后返回另一个视图、angularjs – ngClick在Angular 1.5.5组件中未触发的事件、angularjs – 使用Angular,我如何将click事件绑定到元素上,并单击后,向下滑动一个兄弟元素?等相关知识,可以在本站进行查询。

本文标签: