0

$rootScope変数を使用し、その値を入力フィールドに入力した値で更新したい状況があります。このDEMOに短縮されたシチュエーション コードがあります。

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変数に渡す方法に関する提案は素晴らしいでしょう!

4

2 に答える 2

1

推奨されていませんが、それでも必要な場合は、次の方法で実行できます

<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ます。

于 2015-12-10T12:29:04.380 に答える
0

を使用しないアプローチは次のng-changeとおりです。

function MyCtrl($scope, $rootScope) {
    $scope.foo=null;
    $scope.doSomething = function () {
    $rootScope.foo=$scope.foo;
        alert("Hello, " + $rootScope.foo);
    }
}
于 2015-12-10T12:50:23.067 に答える