将输入值按角度传递给$rootScope变量

Angular pass input value to $rootScope variable

本文关键字:rootScope 变量 输入      更新时间:2023-09-26

我有这样的情况,我想使用$rootScope变量,并用输入字段中输入的值更新其值。我有一个缩写为这个演示的situation代码:

HTML:

<div ng-controller="MyCtrl">
    <input type="text" ng-model="foo" placeholder="Enter something" />
    <input type="button" ng-click="doSomething()" value="Send" ng-disabled="foo == null" />
</div>

脚本:

var myApp = angular.module('myApp', []);
function MyCtrl($scope, $rootScope) {
    $rootScope.foo = null;
    $scope.doSomething = function () {
        alert("Hello, " + $rootScope.foo);
    }
}

关于如何将输入值传递给$rootScope变量的任何建议都将非常棒!

虽然不推荐,但如果你想,你可以用以下方式

<div ng-controller="MyCtrl">
    <input type="text" ng-model="foo" placeholder="Enter something" ng-change="onFooChange()" />
    <input type="button" ng-click="doSomething()" value="Send" ng-disabled="foo == null" />
</div>

脚本

var myApp = angular.module('myApp', []);
function MyCtrl($scope, $rootScope) {
    $rootScope.foo = null;
    $scope.onFooChange = function(){
     $rootScope.foo = angular.copy($scope.foo);
    }
    $scope.doSomething = function () {
        alert("Hello, " + $rootScope.foo);
    }
}

当文本字段的值更改时,调用onFooChange函数并将该值存储到$rootScope中。

以下是一种不使用ng-change:的方法

function MyCtrl($scope, $rootScope) {
    $scope.foo=null;
    $scope.doSomething = function () {
    $rootScope.foo=$scope.foo;
        alert("Hello, " + $rootScope.foo);
    }
}