【问题标题】:How can I update my view / scope in Angular如何在 Angular 中更新我的视图/范围
【发布时间】:2017-01-16 03:44:11
【问题描述】:

在范围内,“ug”属性取决于“user”和“age”,当我更新“user”或“age”时,为什么“ug”没有更新?如何更新“ug”

HTML

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="ctrl">
    user:<input ng-model="user">
    <br>
    age:<input ng-model="age">
    <br>
    user and age : <span style="color: red" ng-bind="user + '-and-' + age"></span>
    <br>
    ug:<span style="color:red;" ng-bind="ug"></span>
    <br>
    addAge:<span style="color:red;" ng-bind="addAge"></span>
</div>

角度 JS 代码

angular.module('myApp', [])
    .controller('ctrl', ['$scope', function($scope) {
        var fn = function(user, age) {
            //TODO
            return user + '-fn-' + age;
        }
        $scope.user = 'taven';
        $scope.age = '30';
        $scope.ug = fn($scope.user, $scope.age);
    }]);

【问题讨论】:

  • 谢谢,我删除了。

标签: javascript angularjs scope angularjs-scope


【解决方案1】:

ng-bind="ug" 写入 ng-bind="fn(user, age)"。 当然,还要在控制器代码中添加:$scope.fn = fn;

HTML:

ug:<span style="color:red;" ng-bind="fn(user, age)"></span>

Javascript:

.controller('ctrl', ['$scope', function($scope){
    $scope.user = 'taven';
    $scope.age = '30';
    $scope.fn = function(user, age){
        //TODO
        return user + '-fn-' + age;
    }
}]);

【讨论】:

    【解决方案2】:

    您可以像这样调用 ng-click 事件来更新范围。

    angular.module('myApp', [])
                .controller('ctrl', ['$scope', function($scope){
                    var fn = function(user, age){
                        //TODO
                        return user + '-fn-' + age;
                    }
                    $scope.user = 'taven';
                    $scope.age = '30';
                    $scope.updateScope = function(){
                      $scope.ug = fn($scope.user, $scope.age);
                    }
                    
                }]);
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    <div ng-app="myApp" ng-controller="ctrl">
        user:<input ng-model="user">
        <br>
        age:<input ng-model="age">
        <br>
        user and age : <span style="color: red" ng-bind="user + '-and-' + age"></span>
        <br>
        ug:<span style="color:red;" ng-bind="ug"></span>
        <br>
        addAge:<span style="color:red;" ng-bind="addAge"></span>
      
        <button ng-click=updateScope()>Update scope</button
    </div>

    【讨论】:

    • 他需要手动更新ug的值,你确定它舒服吗?
    • @SlavaUtesinov 感谢您的反馈,我刚刚向他展示了另一种方法。
    • 非常感谢。我有一个问题,当我更改一次输入时,为什么 fn 会被调用两次。
    • 它在哪里调用了两次?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多