Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 范围函数中的角度修改范围属性_Angularjs_Scope_Controller - Fatal编程技术网

Angularjs 范围函数中的角度修改范围属性

Angularjs 范围函数中的角度修改范围属性,angularjs,scope,controller,Angularjs,Scope,Controller,我从一个小星期开始使用angular,我遇到了一个奇怪的行为(我不知道为什么我之前没有看到,因为这看起来像是一个非常基本的错误) 我有一个控制器,比如说HomeController,它定义了两个作用域函数:foo()和bar()以及一个对象“var myVar=5”,我想在foo()中更改myVar的值,并在bar()中写入它的内容 问题是,看起来foo()没有修改myVar。我对angular中的作用域及其交互方式还不是很了解,但我认为foo()中的$scope是一个不同的作用域,是实际控制器

我从一个小星期开始使用angular,我遇到了一个奇怪的行为(我不知道为什么我之前没有看到,因为这看起来像是一个非常基本的错误)

我有一个控制器,比如说HomeController,它定义了两个作用域函数:foo()和bar()以及一个对象“var myVar=5”,我想在foo()中更改myVar的值,并在bar()中写入它的内容

问题是,看起来foo()没有修改myVar。我对angular中的作用域及其交互方式还不是很了解,但我认为foo()中的$scope是一个不同的作用域,是实际控制器作用域的副本。因此,修改它不会修改控制器

但我怎样才能做到这一点呢

编辑:添加所有使用的代码

编辑2:添加插销:

这是我的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>
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>