ホームページ  >  記事  >  ウェブフロントエンド  >  angularJSで使用するにはどうすればよいですか?

angularJSで使用するにはどうすればよいですか?

亚连
亚连オリジナル
2018-06-23 16:38:561027ブラウズ

この記事では、angularJS の使用法に関するいくつかの関連情報を主に紹介しますので、必要な方は参考にしてください。

イベント オブジェクトを使用する場合、ng-click やその他の命令で $event を渡す必要があることに注意してください。 ng-model で使用できる値を持つタグがある場合に便利です

ng-model で使用する必要があります

データ検証を行うことができます

ng-click/dblclick
ng-mousedown/up
ng-mouseenter/leave
ng-mousemove/over/out
ng-keydown/up/press
ng-focus/blur
ng-submit
チェックボックスが選択されているかどうかを制御します

設定のみこれはデータを通じて選択するかどうかのみを制御できます

ng-modelを設定すると、それを通じてデータを制御できます

disabledとreadonlyの違い

Form要素はdisabledまたはreadonly属性を設定することで設定できます無効に設定すると、ユーザーはそれを使用できなくなり、フォームは読み取り専用

によってのみ無効になります。つまり、ユーザーは操作できませんが、フォームは送信されます

カウントダウンラッシュ購入の小規模なケース

$interval サービスは、ダーティデータを自動的に検出できる setInterval と同等です

それをクリアしたい場合は、値を割り当ててから $interval.cancel ( timer)

ng-show は true と表示されます。非表示にする場合は false

ng-hide を非表示にする場合は true。 false display

ng-if は ng-show と同じですが、表示されない場合はノードが dom ドキュメント内にないという点が異なります

<button ng-click="clickFn($event)" class="btn btn-danger">aa</button>
ng-bind 関連

ng-bind には問題があります、追加後 data 変数の後には何も追加できません。このデータのみがこのタグに表示され、他のものは機能しません。たとえば、

ng-change

タグを解析できません

。大丈夫です、ng-bind-html を使用してください

ng-disabled 控制元素是否可用
ng-readonly
ng-checked
これは 1.3 より前では不可能です。1.3 以降の大きな変更の際、angular.js を合理化するために、これはプラグインを使用する必要がありました。 (モジュール)

これも angular にする必要があります。モジュールに「ngSanitize」を入れます

次に、表示するラベルを変数に掛けて、それを ng-bind-html に設定する必要があります

var app = angular.module("myapp",[])
app.controller("myController",function ($scope,$interval) {
$scope.num=1
$scope.canBuy = false
$scope.time = 5
  var timer = $interval(function () {
   $scope.time--;
   if($scope.time<=0){
    $scope.canBuy=true
    $interval.cancel(timer)     
   }
  },1000)
 })

これコマンドを使用すると、式の解析を防ぐことができます

{{name}}---111
用ng-bind-template就好
ng-bind-template="{{name}}---111"

ng-include

HTML コード スニペットを導入できます。また、コード スニペットに式を記述することもできます

ng-bind-html="<h1>{{name}}---111</h1>"
注実は内部的にはajaxリクエストなのでサーバー環境でデータをバインドする必要があります
$scope.text= "<h1>"+$scope.name+"---111</h1>"
ng-bind-html=&#39;&#39;text“
ng-non-bindable

表示処理中に内部でノードが動作してしまいパフォーマンスが良くありません このように設定して表示データを更新することができます。ある瞬間のビュー内で

AngularJS

<h3 ng-non-bindable>{{name}}</h3>

オブジェクト指向の考え方を使用できるコントローラーを作成します

$scope.text=&#39;html/a.html&#39;;
ng-include=&#39;text&#39;

サービスについて実際に多くのことを話しましょう。

angularJS では、サービスは特定の関数を通じてデータと対話するために使用されます

$http service

ng-model-options=&#39;{updateOn:&#39;blur&#39;}&#39;

メソッドは配信メソッドを表します get、post

urlデータインターフェイス

params送信されたデータは $.ajax のデータと同等です: {}

success success callback

error error callback

ここでは JSONP テクノロジーについて説明します

JSONP はクロスドメインの問題を解決する一般的な方法です

クロスドメインの問題: ブラウザーには同一オリジン ポリシーがあるため、異なるドメイン間でデータが交換されるとクロスドメインの問題が発生します。

オリジナル オリジン ポリシー: これは同じプロトコル、同じドメイン名でのみ実行できます。 、および同じポート データ相互作用

JSONP の原則: スクリプト タグの src 属性 (データを受信するためにコールバック関数を使用します) を使用できます。これは、同一オリジン ポリシーの影響を受けません。コールバック関数を設定することで、異なるドメインからデータを受信する

データを受信する

JSONP は、フロントエンドとバックエンドを組み合わせたクロスドメイン メソッドです。フロントエンドはデータを要求し、それをコールバック関数の場合、バックエンドはデータをコールバック関数に戻す必要があります

JSONP AJAX ですか? Ajax は、xmlhttprequest オブジェクトを使用して非同期データをやり取りする技術を指します。JSONP は ajax に属しません。JSONP を使用する場合、どのような点に注意する必要がありますか?

ポストクロスドメイン処理は実行できません。スクリプトタグとコールバック関数はリクエストごとに動的に作成され、データ取得の完了後に破棄される必要があることに注意してください。

メソッドがjsonpの場合、クロスドメインリクエストにjsonpを使用できますが、URLの後にコールバック値をJSON_CALLBACKとして記述することに注意してください

Baidu検索の例

ここでの参照はangular-sanitizeです。 js

ng-controller

$locationサービス

<p ng-controller="myController as myFun"> 
{{name}}<br>
{{myFun.age}}<br>
{{myFun.sex}}
</p>
myapp.controller("myController",["$scope",myFun])
function myFun($scope){
 $scope.name=&#39;allen&#39;;
 this.sex=&#39;male&#39;
}
myFun.prototype.age="18"
$logサービス

複数のコンソール出力モード

$http({
 url:"http://datainfo.duapp.com/shopdata/getclass.php",
 method:"get",
 params:{}
}).success(function(data){
 $scope.dataList=data;
}).error(function(error){
 console.log(error)
})

サービスプロバイダー用のangularJs構成

例如

myapp.config(["$interpolateProvider",function($interpolateProvider){
 $interpolateProvider.startSymbol("!!");
 $interpolateProvider.endSymbol("!!");
}])

angular就不认识{{}}了,开始变成!!!!

自定义服务 三种

1.factory

myapp.factory(&#39;serviceName&#39;,function(){
  return ....
})

可以return 字符串、数组、函数、对象(使用最多,最和逻辑)

引入方法和angualr自带的前面加$的服务完全一样,使用方法取决于return出来的是什么东西,自定义服务的服务名还是别加$了

eq:返回一个 两个数之间的随机数的服务

myapp.factory("myService",function(){
 return {
  getRandom:function(a,b){
   return Math.random()*(b-a)+a;
  }
 }
})

自定义的服务可以依赖注入其他服务

myapp.factory(&#39;myHttpService&#39;,[&#39;$http&#39;,function($http){
   return {
     $http({
       url:......
     })      
     }
}])

eq:下一个自定义的http服务

myapp.factory("myHttpService",["$http",function($http){
  return {
    http:function(url,sfn,efn){
      $http({
        url:url,
        method:"get"
      }).success(sfn).error(efn)
    }
  }
}])
myHttpService.http("http://datainfo.duapp.com/shopdata/getclass.php",function(data){
  console.log(data)
},function(data){
  console.log(data)
})

2.provider

可以通过去自定义一个服务供应商去定义一个服务,写法有区别,服务功能性的东西需要嵌套一层返回

myapp. provider (&#39;myHttpService&#39;,[&#39;$http&#39;,function($http){
   return {
     $get:function(){
     return:{//这里才是输出
     } 
     }
}])

外面return出来的是这个服务的供应商,供应商的$get方法里返回的才是供我们使用的部分,可以通过更改供应商的部分参数来控制服务的功能,

eq:还是返回一个范围内的随机数,但是通过配置供应商的一个值来控制服务返回的是整数还是小数

myapp.provider("myService",function(){
  return {
    isInt:true,
    $get:function(){
      var that=this;
      return {
        getRandom:function(a,b){
          var num=Math.random()*(b-a+1)+a;
          if(that.isInt){
            return Math.floor(num);
          }else{
            return(num)
          }
        }
      }
    }
  }
})
myapp.config(["myServiceProvider",function(myServiceProvider){
  myServiceProvider.isInt=false;
}])

通过这种方法创建的服务是可以配置供应商的

3.service

通过这种方法创建出来的只能是对象
最简单的创建方式,自带返回,支持面向对象的写法

myapp.service("myService",function(){
    this.getRandom=function(a,b){
      return Math.random()*(b-a)+a;
    }
})

myapp.service("myService",aaa)
function aaa(){
  this.getRandom=function(a,b){
    return Math.random()*(b-a)+a;
  }
}

多个控制器间数据的共享

实现多个控制器数据共享的方法有这样三种,

第一种比较简单,就是把数据放到父作用域上,就都可以访问了

第二种就是在控制器里通过$$prevSibling找到兄弟作用域,然后使用数据,需要注意的是,如果是初始数据类型的话就不能做数据双向绑定了

第三种是定义服务,把需要共享的数据做成服务,这样就都可以用了

<body>

  <p class="container">
    <p ng-controller="firstController">
      <input type="text" class="form-control" ng-model="name">
      <input type="text" class="form-control" ng-model="data.name">
      <input type="text" class="form-control" ng-model="Data.name">
      <p>
        first-name:{{name}}<br>
        first-data-name:{{data.name}}<br>
        first-Data-name:{{Data.name}}
      </p>

    </p>
    <p ng-controller="secondController">
      <p>
        second-name:{{name}}<br>
        second-data-name:{{data.name}}<br>
        second-Data-name:{{Data.name}}
      </p>
    </p>
  </p>
</body>
<script src="../Base/angular.min.js"></script>
<script>
  var app=angular.module("myapp",[]);
  app.factory("Data",function () {
    return {
      name:&#39;lily&#39;
    }
  })
  app.controller("firstController",function ($scope,Data) {
    $scope.name="allen";
    $scope.data={
      name:&#39;tom&#39;
    }
    $scope.Data=Data;
  })
  app.controller("secondController",function ($scope,Data) {
    $scope.name=$scope.$$prevSibling.name;
    $scope.data=$scope.$$prevSibling.data;
    $scope.Data=Data;
  })
</script>

自定义模块

所有的模块都有服务,ng-app这个模块理由¥scope什么的服务,

咱们自己也可以写一个模块,然后里面可以去写服务

这样就可以把某些服务写在某个自定义的模块里,实现重复调用

例如把随机数的例子写在一个自定义的模块里

var myModule=angular.module("myModule",[]);
myModule.service("myService",function(){
  this.ran=function(a,b){
   return Math.random()*(a+b)-a;
  }
})
var myapp=angular.module("myapp",["myModule"]);
myapp.controller("myController",["$scope","$log","myService",function($scope,$log,myService){
 $log.log(myService.ran(5,10))
}])

其实像angualr.sanitize.js就是一个自定义模块

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

使用axios如何实现ajax请求(详细教程)

在JavaScript中如何实现弹性效果

使用JavaScript如何实现二叉树遍历

在axios中如何实现cookie跨域

以上がangularJSで使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。