AngularJS:如何在工厂中使用ng-change?

时间:2015-05-06 14:50:51

标签: javascript angularjs angularjs-ng-change

我的HTML:

<div ng-controller="MainController">
  <input type="text" ng-model="value" ng-change="change(value)">
</div>

我的控制器:

app.controller('MainController', ['$scope', function($scope){
    var search;

    $scope.change = function(value) {
        search = value;
    }
}]);

效果很好。

现在我想将这个功能(ng-change)用于工厂,但我不知道如何。所以,我的控制器:

app.controller('MainController', ['$scope', 'MainFactory', function($scope, MainFactory){
    $scope.search = MainFactory.getSearch();
}]);

我的工厂:

app.factory('MainFactory', function(){
    var search;

    return {
        getSearch: function() {
            whatMustBeHere.change = function(value) {
                search = value;
            }
            return search;
        }
    }
});

也许,还有其他方法可以解决这个问题吗?非常感谢。

1 个答案:

答案 0 :(得分:1)

使用getter和setter来保存工厂中的值

您可以设置值onChange(不要忘记在控制器中注入工厂)

像这样:

app.controller('MainController', ['$scope', function($scope, MainFactory){

    $scope.search = MainFactory.getSearchValue();

    $scope.change = function(value) {
        MainFactory.setSearchValue(value);
    }
}]);

并在您的工厂

app.factory('MainFactory', function(){
    var search;

    return {
        setSearchValue: function(value) {
            this.search = value;
        }

        getSearchValue: function() {
            return this.search;
        }
    }
});