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