免责声明我是angularjs的新手:)
我有一个委托给服务的控制器,我正在尝试保留$ scope,所以我可以在设置属性后使用scope.apply:
var Build = function($scope, $http, mango) {
var scope = $scope;
$scope.BuildManagerSubmit = function(selectedProfile) {
mango.buildMango(selectedProfile.def, function(profiledef) {
// bunch of property assignments on selectedProfile ...
scope.$apply();
}, scope);
};
};
controllers.controller('Build', ['$scope', '$http', 'mango', Build]);
请注意,我正在使用闭包来保存范围并将其传递给服务(为简洁起见,省略)。该服务像cb.call(context,...)一样回调我,所以我保持对范围的访问。这一切都很好,但我更关心是否有更好的习语。在委托给像这样的服务时,我没有看到很多维护$ scope的例子。
编辑:这个应用程序使用node-webkit,'mango'服务本质上是与文件系统交互以调用shell脚本等。答案 0 :(得分:0)
我会让芒果服务处理它(在其中注入$ rootScope),也许使用promises来替换回调,所以它看起来像这样:
var Build = function($scope, $http, mango) {
$scope.BuildManagerSubmit = function(selectedProfile) {
selectedProfile.profileDef = mango.buildMango(selectedProfile.def);
// do something when profileDef returned? (not always necessary)
selectedProfile.profileDef.then(function(profileDef) {
});
};
};
controllers.controller('Build', ['$scope', '$http', 'mango', Build]);