我有以下工作代码来设置控制器' HelloCtrl'范围变量' root'来自工厂' testFactory' function setRoot()。我使用ng-submit =" testSubmit()"使用ng-model =" test"在我的HTML中。我担心这不是最好的做法,你还会推荐什么?
angular.module('testApp', [])
.controller('HelloCtrl', function ($scope, testFactory, testService) {
$scope.root='initial';
$scope.testSubmit = function () {
testFactory.setRoot($scope)
}
})
.factory('testFactory', function(){
return {
setRoot: function(scope){
scope.root=scope.test
}
}
})
答案 0 :(得分:4)
执行所需操作的唯一方法是从工厂返回值,然后将此值绑定到$scope
:
angular.module('testApp', [])
.controller('HelloCtrl', function ($scope, testFactory, testService) {
$scope.root = 'initial';
$scope.testSubmit = function() {
$scope.root = testFactory.setRoot();
}
})
.factory('testFactory', function() {
return {
setRoot: function() {
return 'Some value';
}
}
});
就像我在上一个问题中所说,$rootScope
和$scope
不能从服务或工厂绑定。你应该利用它们的方式是从它们返回一个值,然后在控制器中使用它们。控制器应该与范围绑定,而不是服务或工厂。
在此示例中,$scope.root
将使用testFactory.setRoot()
返回的值进行更新,在本例中为'Some value'
。
以下是您可以用来更好理解的另一个问题: