Angularjs 范围函数中的角度修改范围属性
我从一个小星期开始使用angular,我遇到了一个奇怪的行为(我不知道为什么我之前没有看到,因为这看起来像是一个非常基本的错误) 我有一个控制器,比如说HomeController,它定义了两个作用域函数:foo()和bar()以及一个对象“var myVar=5”,我想在foo()中更改myVar的值,并在bar()中写入它的内容 问题是,看起来foo()没有修改myVar。我对angular中的作用域及其交互方式还不是很了解,但我认为foo()中的$scope是一个不同的作用域,是实际控制器作用域的副本。因此,修改它不会修改控制器 但我怎样才能做到这一点呢 编辑:添加所有使用的代码 编辑2:添加插销: 这是我的Index.htmlAngularjs 范围函数中的角度修改范围属性,angularjs,scope,controller,Angularjs,Scope,Controller,我从一个小星期开始使用angular,我遇到了一个奇怪的行为(我不知道为什么我之前没有看到,因为这看起来像是一个非常基本的错误) 我有一个控制器,比如说HomeController,它定义了两个作用域函数:foo()和bar()以及一个对象“var myVar=5”,我想在foo()中更改myVar的值,并在bar()中写入它的内容 问题是,看起来foo()没有修改myVar。我对angular中的作用域及其交互方式还不是很了解,但我认为foo()中的$scope是一个不同的作用域,是实际控制器
<!-- 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>
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>
谢谢
$scope.myVar
只有在首先调用$scope.foo()
方法时才会更新
勾选以下代码,应显示10:
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 , I would like 10 there
};
$scope.foo();
$scope.bar();
}])
这些问题的答案很快 事实上,我并不是从我的控制器调用这些函数 我有一个视图文件,其中我定义了两个按钮,第一个按钮 打电话给福 呼叫栏
当然,我先点击“呼叫foo”btn,然后点击“呼叫栏”我放置了两个按钮,每个按钮触发其功能:
<button ng-click="foo()">foo</button>
<button ng-click="bar()">bar</button>
foo
酒吧
看看这个-当你的扑克牌上的“foo”之后点击“bar”时,它显示了10:
<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>
您的可单击链接包含重新加载页面状态并重置范围变量的
href=“#”
,这就是为什么bar()总是看到值=5。删除它们应该可以解决您的问题。据我所知-在当前代码中,如果您在“bar”之前触发“foo”,它应该完全按照您的计划执行。。。我想你的问题要简单得多,与深入理解作用域无关。你需要分享你观点的代码,以了解你到底在做什么。我添加了我的代码和一个PlunkRok,正如我所说,这是一个愚蠢而非常基本的错误:)。这是工作,谢谢!
<button ng-click="foo()">foo</button>
<button ng-click="bar()">bar</button>
<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>