以上就是给各位分享javascript–在AngularJS模块之间发送数据的正确方法是什么?,其中也会对简述angularjs中模块的作用进行解释,同时本文还将给你拓展angular2–在RxJs5
以上就是给各位分享javascript – 在AngularJS模块之间发送数据的正确方法是什么?,其中也会对简述angularjs中模块的作用进行解释,同时本文还将给你拓展angular2 – 在RxJs 5中共享Angular 2 Http网络调用的结果的正确方法是什么?、Angular2,禁用锚元素的正确方法是什么?、angularjs – 从对象Angular JS中删除元素的正确方法是什么?、angularjs – 使用Angular&Express登录用户的正确方法是什么?等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:- javascript – 在AngularJS模块之间发送数据的正确方法是什么?(简述angularjs中模块的作用)
- angular2 – 在RxJs 5中共享Angular 2 Http网络调用的结果的正确方法是什么?
- Angular2,禁用锚元素的正确方法是什么?
- angularjs – 从对象Angular JS中删除元素的正确方法是什么?
- angularjs – 使用Angular&Express登录用户的正确方法是什么?
javascript – 在AngularJS模块之间发送数据的正确方法是什么?(简述angularjs中模块的作用)
angular.module('list',[]).controller('listController',ListController); var app = angular.module('myapp',['list']).controller('appController',AppController); function AppController() { this.name = "MiSAE"; this.fetch = function() { console.log("feching"); //change ListController list //do something else } } function ListController() { this.list = [1,2,3]; this.revert = function() { this.list.reverse(); } }
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <divng-app="myapp" ng-controller="appController as App"> <div> Name: <input type="text" ng-model="App.name" /> <button ng-click="App.fetch()">Fetch</button> </div> <divng-controller="listController as List"> <button ng-click="List.revert()">Revert</button> <ul> <li ng-repeat="item in List.list">{{item}}</li> </ul> </div> </div>
现在,当您点击Fetch按钮时,您将使用$http发送名称(以及其他过滤器和内容)到API.然后,您将获得一些数据,包括您要绘制的项目列表.然后,您要将该列表发送到列表模块,以进行绘制.
它必须是这样的,因为您将在不同的地方使用列表模块,它将始终绘制列表,并添加一些功能,如重新排序和反转.虽然过滤器和API连接将更改,但您的列表行为将不会,因此必须有2个不同的模块.
也就是说,提取数据后,将数据发送到列表模块的最佳方式是什么?有服务?
解决方法
您应该创建一个组件,该组件将显示列表,并提供一些可以修改列表的操作,并告诉父级更新该值.
var list = angular.module('listModule',[]); list.controller('listCtrl',function() { this.reverse = function() { this.items = [].concat(this.items).reverse(); this.onUpdate({ newValue: this.items }); }; }); list.component('list',{ bindings: { items: '<',onUpdate: '&' },controller: 'listCtrl',template: '<button ng-click="$ctrl.reverse()">Revert</button><ul><li ng-repeat="item in $ctrl.items">{{ item }}</li></ul>' });
这样当您单击“还原”列表组件将反转数组并执行HTML元素的on-update属性中提供的功能.
然后,您可以简单地将您的应用程序设置为依赖于此模块
var app = angular.module('app',['listModule']);
并使用列表组件
<list data-items="list" data-on-update="updateList(newValue)"></list>
您可以在the example中看到其余的代码
angular2 – 在RxJs 5中共享Angular 2 Http网络调用的结果的正确方法是什么?
getCustomer() { return this.http.get('/someUrl').map(res => res.json()); }
如果我们采取这个可观察并添加多个订阅者:
let network$ = getCustomer(); let subscriber1 = network$.subscribe(...); let subscriber2 = network$.subscribe(...);
我们要做的是确保这不会导致多个网络请求。
这可能看起来像一个不寻常的情况,但其实是很常见的:例如,如果调用者订阅了observable显示一个错误消息,并将其传递给模板使用async管道,我们已经有两个订阅者。
在RxJs 5中正确的做法是什么?
也就是说,这似乎工作正常:
getCustomer() { return this.http.get('/someUrl').map(res => res.json()).share(); }
但是这是在RxJs 5中这样做的惯用方法,还是我们应该做别的事情呢?
import {Injectable} from '@angular/core'; import {Http,Headers} from '@angular/http'; import {Observable} from 'rxjs/Observable'; import 'rxjs/observable/of'; import 'rxjs/add/operator/share'; import 'rxjs/add/operator/map'; import {Data} from './data'; @Injectable() export class DataService { private url:string = 'https://cors-test.appspot.com/test'; private data: Data; private observable: Observable<any>; constructor(private http:Http) {} getData() { if(this.data) { // if `data` is available just return it as `Observable` return Observable.of(this.data); } else if(this.observable) { // if `this.observable` is set then the request is in progress // return the `Observable` for the ongoing request return this.observable; } else { // example header (not necessary) let headers = new Headers(); headers.append('Content-Type','application/json'); // create the request,store the `Observable` for subsequent subscribers this.observable = this.http.get(this.url,{ headers: headers }) .map(response => { // when the cached data is available we don't need the `Observable` reference anymore this.observable = null; if(response.status == 400) { return "FAILURE"; } else if(response.status == 200) { this.data = new Data(response.json()); return this.data; } // make it shared so more than one subscriber can get the result }) .share(); return this.observable; } } }
Plunker example
另请参见缓存HTTP响应以获得更多RXjsy方法
Angular2,禁用锚元素的正确方法是什么?
我正在 Angular2 应用程序上工作,我需要显示-但是disable
是<a>
HTML 元素。正确的方法是什么?
更新
请注意*ngFor
,这会阻止使用选项,*ngIf
而不是<a>
完全渲染。
<a *ngFor="let link of links"
href="#"
[class.disabled]="isDisabled(link)"
(click)="onClick(link)">
{{ link.name }}
</a>
该 打字稿 组件有一个方法,看起来像这样:
onClick(link: LinkObj) {
// Do something relevant with the object...
return false;
}
我实际上需要防止元素被单击,而不仅仅是与 CSS
一起出现。我以为我首先需要潜在地绑定到[disabled]
属性,但这是不正确的,因为锚元素没有disabled
属性。
我查看并考虑过使用,pointer-events: none
但是这妨碍了我的cursor: not-allowed
工作方式-这是要求的一部分。
angularjs – 从对象Angular JS中删除元素的正确方法是什么?
<div ng-repeat="item in data.education_list"> <a href="" ng-click="deleteEducation(item)">Delete</a> </div>
我将对象项从ng-repeat传递给函数deleteEducation以从data.education_list中删除元素.
所以外观功能:
$scope.deleteEducation = function (item){ $scope.data.education_list.splice($scope.data.education_list.indexOf(item),1); }
所以这种方式有时不正确.当我在ng-repeat中有一些元素并且在删除项目之后我的模板HTML被更新并删除了另一个项目的行,而不是我删除的项目.
什么是正确的删除方式?
如果执行{{data.education_list}},data.education_list是对象数组:
[{"name":"Test1","time":"01 Hun 2004 - 12 Sun 2006","Idusereducation":"86","usereducationIdToUser":"702","type":"1"}]
问题二:
如果我有对象的对象而不是带键的数组:
{"1" : {obj},2 : "obj"}
如果我尝试按键从对象中删除元素:
删除OBJ [1];
我遇到了同样的问题.
解决方法
<div ng-repeat="item in data.education_list"> <a href="" ng-click="data.education_list.slice($index,1)">Delete</a> </div>
如果您要过滤列表
你需要搜索索引.然后做拼接.它有点重,但如果您要过滤列表则需要.
JS
this.removeItem = function(item) { var index = $scope.data.education_list.indexOf(item); if (index != -1) { $scope.data.education_list.splice(index,1); } };
HTML
ng-click="myctrl.removeItem(item)"
Working Example click to delete and .indexOf vs $index comparison
angularjs – 使用Angular&Express登录用户的正确方法是什么?
我正在使用passportjs的Facebook模块,Express和Angular。我相信我有护照正确执行,但不知道1)我应该如何检查用户是否登录,以及2)根据用户状态显示视图的最佳做法,使用Angular&表现。我在这里看了一个例子,但不要以为这是我应该用Angular(https://github.com/jaredhanson/passport-facebook)
谢谢!
对于Express部分,您必须使用真棒护照节点模块来处理服务器端身份验证。
你有这里的所有细节:https://vickev.com/#!/article/authentication-in-single-page-applications-node-js-passportjs-angularjs
这篇文章真的很棒,Brad Green(Google AngularJS的工程总监)向我介绍了这篇文章。
希望有帮助
如果您想了解更多有关Angular安全性的内容,您只需要问问,我们很乐意为您提供帮助。
今天关于javascript – 在AngularJS模块之间发送数据的正确方法是什么?和简述angularjs中模块的作用的讲解已经结束,谢谢您的阅读,如果想了解更多关于angular2 – 在RxJs 5中共享Angular 2 Http网络调用的结果的正确方法是什么?、Angular2,禁用锚元素的正确方法是什么?、angularjs – 从对象Angular JS中删除元素的正确方法是什么?、angularjs – 使用Angular&Express登录用户的正确方法是什么?的相关知识,请在本站搜索。
本文标签: