摘要:問題描述我修改的內(nèi)容時,綁定的完全沒更新,只能用插件看一下。也就是說與綁定的實際上是中的。只需改,將顯示綁定到使用對象的形式來綁定為什么一個就能解決問題了呢,以第二個方法為例。
問題描述:
//app.js angular.module("deapp", []) .controller("ParentCtrl", ["$scope", ParentCtrl]) .controller("ChildCtrl", ["$scope", ChildCtrl]); function ParentCtrl($scope) { $scope.description = ""; } function ChildCtrl($scope) { } //index.html
我修改textarea的內(nèi)容時,綁定的description完全沒更新,只能用chrome插件ng-inspector看一下。
圖1 初始scope
圖2 輸入后ChildCtrl 出現(xiàn)description
所以可以看到問題變成了Angular Scope Inheritance
Angular Scope Inheritance我用word文檔畫了scope的繼承圖示,如下
圖3 初始scope
圖 4 錯誤的給ChildCtrl添加了description
在這個圖可以看到實際上并沒有更新父級scope的description,反而在當(dāng)前所在的ChildCtrl scope新建了description。也就是說與textarea綁定的model實際上是ChildCtrl scope中的description。
$scope的繼承是原型鏈繼承,有兩個特點:
讀子類的屬性時,子類有這個屬性(hasOwnProperty)的時候則讀子類自己的,子類沒有的時候讀父類的,不管子類有沒有這個屬性,在子類上都不會有新屬性被創(chuàng)建。
寫子類的屬性時,如果子類有這個屬性(hasOwnProperty)則寫子類的,子類沒有的話就會在子類上新建一個同名的新屬性,而父類繼承過來的屬性被隱藏。
————來自http://pinkyjie.com/2015/02/07/prototypal-inheritance-of-scope-in-angularjs/
所以對于description也是一樣,讀description時,先在ChildCtrl中讀,讀不到就到ParentCtrl中讀,所以事先給ParentCtrl的description設(shè)置的初始值,在頁面刷新后是可以顯示出來的。
但是,寫description的時候就不一樣了,在ChildCtrl中找不到就直接創(chuàng)建一個新的屬性,父級scope的同名屬性就被隱藏了,textarea綁定的模型也就變成了ChildCtrl scope中的description,往后再怎么修改textarea的內(nèi)容,父級scope的description永遠(yuǎn)保持原來的值。
這不是我想看到的,辦法是有的,使用.就能解決這個問題了。
只需改html,將textarea顯示綁定到$parent.description
使用對象的形式來綁定description
// app.js
function ParentCtrl($scope) {
$scope.info = { description: "156" };
}
function ChildCtrl($scope) {
}
// index.html
為什么一個.就能解決問題了呢,以第二個方法為例。
寫的時候是寫info.description,需要先讀info,ChildCtrl沒有info,于是去ParentCtrl讀,找到info后,就寫父級scope的info.description。
Angular Scope Inheritance的詳細(xì)圖文解說
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/86102.html
摘要:執(zhí)行的時候,會綁定上下文對象為組件實例于是中的就能取到組件實例本身,的代碼塊頂層作用域就綁定為了組件實例于是內(nèi)部變量的訪問,就會首先訪問到組件實例上。其中的獲取,就會先從組件實例上獲取,相當(dāng)于。 寫文章不容易,點個贊唄兄弟專注 Vue 源碼分享,文章分為白話版和 源碼版,白話版助于理解工作原理,源碼版助于了解內(nèi)部詳情,讓我們一起學(xué)習(xí)吧研究基于 Vue版本 【2.5.17】 如果你覺得...
摘要:首先,兄弟,容我先說幾句涉及源碼很多,篇幅很長,我都已經(jīng)分了上下三篇了,依然這么長,但是其實內(nèi)容都差不多一樣,但是我還是毫無保留地給你了。 寫文章不容易,點個贊唄兄弟專注 Vue 源碼分享,文章分為白話版和 源碼版,白話版助于理解工作原理,源碼版助于了解內(nèi)部詳情,讓我們一起學(xué)習(xí)吧研究基于 Vue版本 【2.5.17】 如果你覺得排版難看,請點擊 下面鏈接 或者 拉到 下面關(guān)注公眾號也...
摘要:在第一版的基礎(chǔ)上進(jìn)行了優(yōu)化,新增一些面試題知識點,對一些知識點進(jìn)行更加深入的描述??梢栽谠撱^子中進(jìn)一步地更改狀態(tài),不會觸發(fā)附加的重渲染過程。改變中的狀態(tài)的唯一途徑就是顯式地提交。這兩個可以在不進(jìn)行刷新的情況下,操作瀏覽器的歷史紀(jì)錄。 在第一版的基礎(chǔ)上進(jìn)行了優(yōu)化,新增一些面試題/知識點,對一些知識點進(jìn)行更加深入的描述。 一、對于MVVM的理解? MVVM 是 Model-View-Vie...
摘要:原文地址的博客點擊在線嘗試一下最終效果如下構(gòu)造器構(gòu)造一個對象,包含基本的,,初始化編譯器用于解析綁定到輸入框和下拉框的和元素的點擊事件。 原文地址:Bougie的博客 點擊在線嘗試一下 最終效果如下: showImg(https://segmentfault.com/img/remote/1460000014485648?w=470&h=421); 構(gòu)造器(construct...
摘要:所以整個的核心,就是如何實現(xiàn)這三樣?xùn)|西以上摘自囧克斯博客的一篇文章從版本開始這個時候的項目結(jié)構(gòu)如下源碼在里面,為打包編譯的代碼,為打包后代碼放置的位置,為測試代碼目錄。節(jié)點類型摘自資源另一位作者關(guān)于源碼解析 本項目的源碼學(xué)習(xí)筆記是基于 Vue 1.0.9 版本的也就是最早的 tag 版本,之所以選擇這個版本,是因為這個是最原始沒有太多功能拓展的版本,有利于更好的看到 Vue 最開始的骨...
閱讀 860·2021-10-14 09:43
閱讀 2187·2021-09-30 09:48
閱讀 3532·2021-09-08 09:45
閱讀 1166·2021-09-02 15:41
閱讀 1953·2021-08-26 14:15
閱讀 851·2021-08-03 14:04
閱讀 3036·2019-08-30 15:56
閱讀 3128·2019-08-30 15:52