2015-02-10 88 views
0

我还是对angularJs的新手。在angularjs控制器中使用非角度外部js函数

我需要从angularjs控制器内的linqjs访问Enumerable类。

我ngController类似于此:

var app1= angular.module("app1"); 
app1.controller("peopleController", ['$scope', 'Restangular', 
function($scope, Restangular) { 
    $scope.people = Restangular.all('people').getList() 
    $scope.selectedItem = Enumerable.From(people).FirstOrDefault(); // ERROR 
}]); 

我得到的错误是:

ReferenceError: Enumerable is not defined

任何帮助吗?

回答

1

我觉得应该是:

var app1 = angular.module("app1"); 
app1.controller("peopleController", ['$scope', 'Restangular', function ($scope, Restangular) { 
    $scope.people = Restangular.all('people').getList(); 
    $scope.selectedItem = Enumerable.From(people).FirstOrDefault(); // ERROR 
}]); 

因此,没有功能的“把PeopleController的名字。

编辑

的问题是可枚举(这是在linqjs定义)是不可用,这被称为瞬间。因此,注入器正在为EnumerableProvider寻找它,但它不存在也不被注入。

您希望确保在运行应用程序之前加载linqjs源代码。如果Enumerable在全局范围内定义,那么您应该可以在控制器中使用它。我创建了加载角和linqjs从CDN并显示您它会从你的控制器 '只是工作' 一的jsfiddle:http://jsfiddle.net/ngn3Lprx/2/

var app = angular.module('myapp', []); 
app.controller('myctrl', ['$scope', function ($scope) { 
    // Example from: http://linqjs.codeplex.com/  
    var jsonArray = [ 
    { "user": { "id": 100, "screen_name": "d_linq" }, "text": "to objects" }, 
    { "user": { "id": 130, "screen_name": "c_bill" }, "text": "g" }, 
    { "user": { "id": 155, "screen_name": "b_mskk" }, "text": "kabushiki kaisha" }, 
    { "user": { "id": 301, "screen_name": "a_xbox" }, "text": "halo reach" } 
    ] 
    // ["b_mskk:kabushiki kaisha", "c_bill:g", "d_linq:to objects"] 
    $scope.queryResult = Enumerable.From(jsonArray) 
    .Where(function (x) { return x.user.id < 200 }) 
    .OrderBy(function (x) { return x.user.screen_name }) 
    .Select(function (x) { return x.user.screen_name + ':' + x.text }) 
    .ToArray(); 
}]); 

有景:

<div ng-app="myapp"> 
    <div ng-controller="myctrl"> 
     <pre> 
{{ queryResult | json }} 
     </pre> 
    </div> 
</div> 

给出:

[ 
    "b_mskk:kabushiki kaisha", 
    "c_bill:g", 
    "d_linq:to objects" 
] 

正如所料。

p.s.不要忘了分号后.getList();

+0

它没有,我忘了它。 – 2015-02-10 09:33:19

相关问题