亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我的ng模型是否真的需要一個點來避免子$ scope問題?

我的ng模型是否真的需要一個點來避免子$ scope問題?

湖上湖 2019-10-30 13:04:22
根據https://github.com/angular/angular.js/wiki/Understanding-Scopes的說法,嘗試將數據綁定到附加到您的基本體上是一個問題$scope:范圍繼承通常是簡單明了的,并且您通常甚至不需要知道它正在發生...直到您嘗試將2路數據綁定(即表單元素,ng-model)綁定到基元(例如,數字,字符串,布爾值)從子作用域內部在父作用域上定義。它不能像大多數人期望的那樣工作。建議是通過遵循始終具有“'”的“最佳實踐”,可以很容易地避免使用基元出現此問題。在您的ng模型中現在,我有一個非常簡單的設置,它違反了以下規則:HTML:<input type="text" ng-model="theText" /><button ng-disabled="shouldDisable()">Button</button>JS:function MyController($scope) {    $scope.theText = "";    $scope.shouldDisable = function () {         return $scope.theText.length >= 2;    };}這真的不好嗎?當我開始嘗試以某種方式使用子范圍時,這是否會以某種可怕的方式將我搞砸?我需要將其更改為類似function MyController($scope) {    $scope.theText = { value: "" };    $scope.shouldDisable = function () {         return $scope.theText.value.length >= 2;    };}和<input type="text" ng-model="theText.value" /><button ng-disabled="shouldDisable()">Button</button>這樣我才能遵循最佳做法?您能給我一個具體的例子嗎,后者將使我免于前者帶來的可怕后果?
查看完整描述

3 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

假設您有范圍M,A和B,其中M是A和B的父級。

如果(A,B)中的一個嘗試寫入M的范圍,則它將僅適用于非原始類型。原因是非基本類型通過引用傳遞。

另一方面,原始類型不是,因此嘗試theText在M的作用域上進行寫操作將分別在A或B的作用域上創建同名的新屬性,而不是寫入M。如果A和B都依賴于此屬性,則會發生錯誤,因為它們中的任何一個都不知道另一人正在做什么。


查看完整回答
反對 回復 2019-10-30
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

是的,我從理論上有點理解這個問題,但是在實際中我看不出它如何影響這個簡單的例子。例如,“如果A和B都依賴于此屬性”,什么時候成立?在我的基礎上建立一個示例非常好。

查看完整回答
反對 回復 2019-10-30
  • 3 回答
  • 0 關注
  • 711 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號