0

免责声明我是 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 并且“芒果”服务本质上是与文件系统交互以调用 shell 脚本等。

4

1 回答 1

0

我会让 mango 服务处理这个问题(在其中注入 $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]);
于 2013-04-26T17:45:23.297 回答