2013-08-27 70 views
0

访问规则的Javascript功能我在我的控制角度的功能,我想调用外部JavaScript函数,这是不行的,我不知道我错过了什么:如何从AngularJS控制器

$scope.addSubscription = function(){ 
    var id = $scope.userId; 
    var name = Exec.UserService.fetch(id); 
    $scope.user.push({id:id, name:name}); 
} 

我的外部JavaScript代码看起来是这样的:

var Exec = (function() { 
    "use strict"; 
     return { 
      EntityManager: (function(){ 
      // some code here 
      }()); 

      UserService: (function(){ 
      return { 
       fetch: function(id){ 
       // some code here 
       return 'something'; 
       }, 

       modify: function(id, status){ 
       // some code here 
       } 
      }; 
      }()) 
     } // end of outer return 
     }()); // end of Exec 
+1

你可以创建一个包含自提琴例如所含的问题? (乍看之下,我不明白为什么它不起作用) –

+0

这可能会忽略这一点 - 我不确定这个文件是否需要在Angular应用程序的外部 - 但如果没有,您可以将外部Javascript代码重构为Angular服务,然后将其注入必要的控制器。 – drdalton

+1

你不是在为这些服务创建角度服务并使用DI? – doogle

回答

4

为什么它不工作的原因是因为你需要使用“,”代替“;”的键值对的分离物体。这是一个语法错误,你应该能够在浏览器的控制台中看到它。

var Exec = (function() { 
    "use strict"; 
    return { 
     EntityManager: (function() { 

     }()), // -> should be , not ; 

     UserService: (function() { 
      return { 
       fetch: function (id) { 
        return 'something'; 

       }, 

       modify: function (id, status) { 

       } 
      }; 
     }()) 
    } 
}()); 

DEMO

+0

准确地说,我要说一个'EntityManager:(function(){ //这里的一些代码 }()),' - 不是你所评论的那个 –

+0

@MarkSchultheiss Oh thx。更新。我今天有点慢... – zsong

+0

对不起,我无法复制粘贴在这里的代码,所以我写了出来,但它确实有逗号而不是分号。在控制台中,我收到了“错误:Exec未定义”。 – user462349