0

我的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;
        }
    }
});

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

4

1 回答 1

1

Use getters and setters to save the value in your factory

You can just set the value onChange (Don't forget to inject the factory in your controller)

Like this:

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

    $scope.search = MainFactory.getSearchValue();

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

and in your factory

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

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

        getSearchValue: function() {
            return this.search;
        }
    }
});
于 2015-05-06T15:11:35.430 回答