我的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;
}
}
});
也许,还有其他方法可以解决这个问题吗?非常感谢。
答案 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;
}
}
});