第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

AngularJS 在指令范圍內(nèi)的更改不會更新父控制器范圍

AngularJS 在指令范圍內(nèi)的更改不會更新父控制器范圍

江戶川亂折騰 2021-11-18 21:08:29
HTML:<div ng-app="myApp" ng-controller="Controller">    <test ng-if="toggle" props="condition"></test></div>Javascript:var myApp = angular.module('myApp', []);myApp.controller('Controller', ['$scope', '$timeout', function($scope, $timeout) {    $scope.condition = [true];    $scope.toggle = $scope.condition[0];    $scope.$watch('condition', (newv, oldv, scope) => {        console.log('old: ' + oldv);        console.log('new: ' + newv);        console.log('toggle: ' + scope.toggle);    }, true);}]);myApp.directive("test", function() {   return {       template: '<div>directive show</div>',       replace: true,       scope: {           props: "="       },       controller: ['$scope', '$timeout', function($scope, $timeout) {           $scope.props[0] = false;       }]   }});行為是在condition[0]被指令更改為 false 后,我可以在控制臺日志中看到新值,但toggle沒有更新。我的問題是:為什么更改toggle時不更新condition[0]?為什么摘要周期也沒有更新toggle?或者toggle,當(dāng)其分配的值發(fā)生變化時,摘要循環(huán)甚至?xí)聠??而且我不是在尋求解決此問題的方法,而是尋求解決此問題的原因。
查看完整描述

2 回答

?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個贊

對我來說,你的問題是這樣的:


var a = false;

var b = a;

console.log(a,b);

var b = true;

console.log(a,b);

為什么a不是true第二次之后console.log?不應(yīng)該ab一樣嗎?

不,因?yàn)?code>a和b是獨(dú)立的實(shí)體。

類似地,當(dāng)代碼值分配false$scope.props[0]該指令的范圍勢必$scope.condition[0]父范圍。

$scope.toggle并且$scope.condition[0]是獨(dú)立的實(shí)體。a改變時不改變b。

$scope.toogle改變時不改變$scope.condition[0]


為什么摘要循環(huán)也不會更新切換?或者,當(dāng)其分配的值發(fā)生變化時,摘要循環(huán)甚至?xí)虑袚Q嗎?

ng-if="toggle"指令在 上創(chuàng)建一個監(jiān)視$scope.toggle。它從不修改$scope.toggle.

props="condition"結(jié)合上創(chuàng)建一個表$scope.props的指令和更新的價值$scope.condition$scope。因?yàn)樗请p向綁定,所以它也會監(jiān)視$scope.condition父對象并更新$scope.props指令的屬性。

$scope.toggleAngularJS 框架或其摘要循環(huán)永遠(yuǎn)不會更新該屬性。


查看完整回答
反對 回復(fù) 2021-11-18
?
泛舟湖上清波郎朗

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個贊

嘗試刪除replace: true指令配置中的 。


使用時replace: true,它將用內(nèi)容替換指令標(biāo)記,因此您將丟失ngIf指令,因?yàn)閠oggleis的初始值true。


<test ng-if="toggle" props="condition"></test>

將被替換為


 <div>directive show</div>

所以結(jié)果將是


<div ng-app="myApp" ng-controller="Controller">

  <div>directive show</div>

</div>


查看完整回答
反對 回復(fù) 2021-11-18
  • 2 回答
  • 0 關(guān)注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號