我現在正在使用角度,因爲現在有1個星期,我遇到一個奇怪的行爲(我不知道爲什麼我之前沒有看到它,因爲它看起來像一個非常基本的錯誤)。我有一個控制器讓我們說定義兩個範圍函數:foo()和bar()和一個對象「var myVar = 5」的HomeController,我想改變foo()中myVar的值,並寫它在bar()中的內容。範圍函數中的角度修改範圍屬性
問題是,它看起來像foo()不會修改myVar。我還沒有意識到角度範圍,以及它們如何相互作用,但我認爲foo()中的$ scope是一個不同的範圍,是實際控制器範圍的副本。所以修改它不會修改控制器。
但我怎麼能做到這一點?
編輯:將所有使用的代碼
編輯2:添加plunker:http://plnkr.co/edit/DGzw0UxjBeND3hQWK3o3
這裏是我的index.html
<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
<!-- CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.2/css/materialize.min.css">
<!-- JS -->
<script src="http://code.angularjs.org/1.2.13/angular.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular-route.js"></script>
<!-- Loading angular App -->
<script src="app.js"></script>
<!-- Loading angular controllers -->
<script src="homeController.js"></script>
</head>
<body ng-app="TemplateApp">
<div ng-view></div>
</body>
</html>
app.js:
var app = angular.module('TemplateApp', ['ngRoute']);
app.config(function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'home.html',
controller: 'homeController'
})
});
home.html的:
<div class="row">
<div class="col s6">
<a class="btn" href="#" ng-click="foo()">call foo</a>
</div>
<div class="col s6">
<a class="btn" href="#" ng-click="bar()">call bar</a>
</div>
</div>
最後homeController.js:
angular.module('TemplateApp').controller('homeController', [ '$scope', function($scope) {
$scope.myVar = 5;
$scope.foo = function() {
$scope.myVar = 10;
console.log($scope.myVar); // display 10
};
$scope.bar = function() {
console.log($scope.myVar); // display 5 Should be 10
};
}])
感謝
據我所知,在當前代碼中,如果你在「bar」之前觸發「foo」,它應該按照你的計劃完成......我想你的問題比深度更簡單,並且與深度無關了解範圍 – happyZZR1400
你需要分享你的觀點代碼,以瞭解你到底做了什麼。 –
我添加了我的代碼和一個運動員 –