最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

AngularJs學習第五篇從Controller控制器談談$scope作用域

 更新時間:2016年06月08日 10:00:41   作者:Company  
這篇文章主要介紹了AngularJs(五)從Controller控制器談談$scope作用域 的相關資料,需要的朋友可以參考下

Controller的創(chuàng)建

AngularJs controller使用無處不在,在里代碼演示比較簡單的創(chuàng)建工作。

<!DOCTYPE html>
<html xmlns="http://www.w.org//xhtml" ng-app="exampleApp">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-"/>
<title>App</title>
<script src="angular.js"></script>
<link href="bootstrap-theme.css" rel="stylesheet" />
<link href="bootstrap.css" rel="stylesheet" />
<script>
angular.module("exampleApp", [])
.controller("defaultCtrl", function ($scope) {
$scope.setInput = function (value) {
console.log("print:" + value);
}
});
</script>
</head>
<body ng-controller="defaultCtrl"> 
<div class="well">
<h>Count</h>
<div class="form-group">
<input class="form-control" required ng-model="value" />
<button ng-click="setInput(value)">Click</button>
</div>
</div>
</body>
</html> 

  在這控制很簡單,首先我在html 中添加了 ng-app 屬性,表示module的作用范圍。

在 body 中添加了 ng-controller 表示 defaultCtrl 控制器的作用范圍。

input 便簽中ng-model 指令的是綁定數據,雙向數據綁定(MVVM)。

$scope 是AngularJs內置的作用域。

此實例的只是把輸入的值打印到控制臺中,如圖:

僅此而已,簡單吧。

多個控制器controller作用域問題

現在我們來改造下程序,

<body >
<div class="well" ng-controller="defaultCtrl">
<h>Count</h>
<div class="form-group">
<input class="form-control" required ng-model="value" />
<button ng-click="setInput(value)">Click</button>
</div>
</div>
<div class="well" ng-controller="defaultCtrl">
<h>Count</h>
<div class="form-group">
<input class="form-control" required ng-model="value" />
<button ng-click="setInput(value)">Click</button>
</div>
</div>
</body> 

  其余代碼不變,我只是把放到body 中的屬性 ng-controller 放到了兩個div中。我重用了defaultCtrl控制器,猜想下,如果我在第一個input標簽輸入內容,我點擊第二個控制器的button按鈕,會出現你所期望的結果嗎?

結果是否和你想你的一樣呢,大家可以看到這個結果為undefined. 在個很好解釋,應為他們的作用域不同,雖然你重復使用了統(tǒng)一控制器,但是在創(chuàng)建作用域確實不同的。

調用的工廠函數會返回不同的作用域。

那么如何進行不同作用域之間的訪問呢,在Angularjs中對于作用域訪問有個$rootScope 。

在這里有三個函數需要介紹下,

$on(name,handler) 注冊一個事件處理函數,該函數在特定的事件被當前作用域收到時將被調用。

$emit(name,args) 向當前父作用域發(fā)送一個事件,直至根作用域。

$broadcast(name,args) 向當前作用域下的子作用域發(fā)送一個事件,參數是事件名稱以及一個用于作用向事件提供額外數據的對象。

現在來更改下代碼:

<script>
angular.module("exampleApp", [])
.controller("defaultCtrl", function ($scope,$rootScope) {
$scope.$on("UpdateValue", function (event, args) {
$scope.input = args.zip;
});
$scope.setInput = function (value) {
$rootScope.$broadcast("UpdateValue", { zip: value });
console.log("print:" + $scope.input);
}
$scope.copy = function () {
console.log("copy:" + $scope.input);
};
});
</script> 
<div class="well" ng-controller="defaultCtrl">
<h>Count</h>
<div class="form-group">
<input class="form-control" required ng-model="value" />
<button ng-click="copy()">Copy</button>
</div>
</div> 

  在段代碼中我添加了幾個函數,同時改變了第二個控制器的函數。

結果:

確實發(fā)生了。

controller繼承

<script>
angular.module("exampleApp", [])
.controller("defaultCtrl", function ($scope, $rootScope) {
//$scope.$on("UpdateValue", function (event, args) {
// $scope.input = args.zip;
//});
$scope.setInput = function (value) {
//$rootScope.$broadcast("UpdateValue", { zip: value });
$scope.input = value;
console.log("print:" + $scope.input);
}
$scope.copy = function () {
console.log("copy:" + $scope.input);
};
})
.controller("simpleCtrl", function ($scope) {
$scope.copy = function () {
console.log("copy:" + $scope.input);
};
});
</script>
<body ng-controller="defaultCtrl">
<div class="well">
<h>Count</h>
<div class="form-group">
<input class="form-control" required ng-model="value" />
<button ng-click="setInput(value)">Click</button>
</div>
</div>
<div class="well" ng-controller="simpleCtrl">
<h>Count</h>
<div class="form-group">
<input class="form-control" required ng-model="value" />
<button ng-click="copy()">Copy</button>
</div>
</div>
</body> 

  我添加了一個控制器,simpleCtrl 仔細觀察下,發(fā)現defaultCtrl 包含了simpleCtrl 中,所以作用simple 也繼承 了。

結果圖:發(fā)下我在第一個窗中輸入時,第二個也變了,應為都是同一個value。

$scope 作用域問題,在使用controller時 要明白其作用域。

相關文章

  • Angular應用tsconfig.json中的lib屬性示例解析

    Angular應用tsconfig.json中的lib屬性示例解析

    這篇文章主要介紹了Angular應用tsconfig.json中的lib屬性示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • angularjs學習筆記之雙向數據綁定

    angularjs學習筆記之雙向數據綁定

    AngularJS在$scope變量中使用臟值檢查來實現了數據雙向綁定。和Ember.js數據雙向綁定中動態(tài)設施setter和getter不同,臟治檢查允許AngularJS監(jiān)視那些存在或者不存在的變量。
    2015-09-09
  • 解決angularJS中input標簽的ng-change事件無效問題

    解決angularJS中input標簽的ng-change事件無效問題

    今天小編就為大家分享一篇解決angularJS中input標簽的ng-change事件無效問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 深入探究AngularJs之$scope對象(作用域)

    深入探究AngularJs之$scope對象(作用域)

    本篇文章主要介紹了深入探究AngularJs之$scope對象(作用域),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • AngularJS手動表單驗證

    AngularJS手動表單驗證

    這篇文章主要介紹了AngularJS手動表單驗證的相關資料,AngularJS的表單驗證大致有兩種,一種是手動驗證,一種是自動驗證,本文重點介紹AngularJS手動表單驗證,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 如何利用@angular/cli V6.0直接開發(fā)PWA應用詳解

    如何利用@angular/cli V6.0直接開發(fā)PWA應用詳解

    這篇文章主要給大家介紹了如何利用@angular/cli V6.0直接開發(fā)PWA應用的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用@angular/cli V6.0具有一定的參考學習價值,需要的朋友可以參考下
    2018-05-05
  • Angular開發(fā)者指南之入門介紹

    Angular開發(fā)者指南之入門介紹

    本篇文章主要介紹了Angular開發(fā)者指南的入門知識,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • AngularJs入門教程之環(huán)境搭建+創(chuàng)建應用示例

    AngularJs入門教程之環(huán)境搭建+創(chuàng)建應用示例

    這篇文章主要介紹了AngularJs入門教程之環(huán)境搭建+創(chuàng)建應用的方法,較為詳細的分析了AngularJS的功能、下載及應用創(chuàng)建方法,需要的朋友可以參考下
    2016-11-11
  • ng-events類似ionic中Events的angular全局事件

    ng-events類似ionic中Events的angular全局事件

    這篇文章主要介紹了ng-events類似ionic中Events的angular全局事件,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • AngularJS 單元測試(二)詳解

    AngularJS 單元測試(二)詳解

    這篇文章主要介紹了AngularJS 單元測試(二)的相關資料,需要的朋友可以參考下
    2016-09-09

最新評論

新泰市| 黎川县| 晋州市| 新津县| 绥化市| 图们市| 纳雍县| 安宁市| 凉山| 嘉善县| 黄骅市| 余干县| 新蔡县| 梅河口市| 乐清市| 韩城市| 南康市| 雷州市| 巍山| 天等县| 清镇市| 夹江县| 宁安市| 慈溪市| 广安市| 西乌珠穆沁旗| 辽宁省| 达州市| 大姚县| 小金县| 宜都市| 郎溪县| 康马县| 调兵山市| 宁安市| 乌拉特前旗| 渝中区| 扎囊县| 南汇区| 文安县| 衡水市|