在 Angular 中的另一个变量中使用变量?

Use variable in another variable in Angular?

我正在尝试使用这个组件 https://github.com/alexklibisz/angular-dual-multiselect-directive 但我不知道如何将数据从后端传递到组件。

我从后端获取数据:

var vm = this;
vm.Categoria1 = [];
 $http.get('http://localhost:5541/api/date/ListCategorii').success(function (data) {
    vm.Categoria1 = data;
}
);

我得到数据:

 [{"Id":1,"NumeCategorie":"Fructe"},{"Id":2,"NumeCategorie":"Legume"},{"Id":3,"NumeCategorie":"Ciocolata"}]

但是 vm.Categoria1 下面是空的:

$scope.demoOptions = {
    title: 'Demo: Recent World Cup Winners',
    filterPlaceHolder: 'Start typing to filter the lists below.',
    labelAll: 'All Items',
    labelSelected: 'Selected Items',
    helpMessage: ' Click items to transfer them between fields.',
    /* angular will use this to filter your lists */
    orderProperty: 'name',
    /* this contains the initial list of all items (i.e. the left side) */
    items: vm.Categoria1, //[{ 'id': '50', 'name': 'Germany' }, { 'id': '45', 'name': 'Spain' }, { 'id': '66', 'name': 'Italy' }, { 'id': '30', 'name': 'Brazil' }, { 'id': '41', 'name': 'France' }, { 'id': '34', 'name': 'Argentina' }],
    /* this list should be initialized as empty or with any pre-selected items */
    selectedItems: []
};

谢谢。

您需要在成功回调中设置demoOptions:

var vm = this;
vm.Categoria1 = [];
 $http.get('http://localhost:5541/api/date/ListCategorii').success(function (data) {
        vm.Categoria1 = data;
        $scope.demoOptions = {
        title: 'Demo: Recent World Cup Winners',
        filterPlaceHolder: 'Start typing to filter the lists below.',
        labelAll: 'All Items',
        labelSelected: 'Selected Items',
        helpMessage: ' Click items to transfer them between fields.',
        /* angular will use this to filter your lists */
        orderProperty: 'name',
        /* this contains the initial list of all items (i.e. the left side) */
        items: vm.Categoria1, //[{ 'id': '50', 'name': 'Germany' }, { 'id': '45', 'name': 'Spain' }, { 'id': '66', 'name': 'Italy' }, { 'id': '30', 'name': 'Brazil' }, { 'id': '41', 'name': 'France' }, { 'id': '34', 'name': 'Argentina' }],
        /* this list should be initialized as empty or with any pre-selected items */
        selectedItems: []
    };
});

最佳做法是这样使用:

var vm = this;
vm.Categoria1 = [];

$http.get('http://localhost:5541/api/date/ListCategorii')
.success(function(data) {
    vm.Categoria1 = data;
    $scope.demoOptions = {
    title: 'Demo: Recent World Cup Winners',
    filterPlaceHolder: 'Start typing to filter the lists below.',
    labelAll: 'All Items',
    labelSelected: 'Selected Items',
    helpMessage: ' Click items to transfer them between fields.',
    /* angular will use this to filter your lists */
    orderProperty: 'name',
    /* this contains the initial list of all items (i.e. the left side) */
    items: vm.Categoria1, //[{ 'id': '50', 'name': 'Germany' }, { 'id': '45', 'name': 'Spain' }, { 'id': '66', 'name': 'Italy' }, { 'id': '30', 'name': 'Brazil' }, { 'id': '41', 'name': 'France' }, { 'id': '34', 'name': 'Argentina' }],
    /* this list should be initialized as empty or with any pre-selected items */
    selectedItems: []
})
.error(function(data, status) {
  console.error('Repos error', status, data);
})
.finally(function() {
  console.log("finally finished repos");
});

希望对您有所帮助! Sa-mi spui daca ai probleme。

你应该设置请求成功的项目:

$http.get('http://localhost:5541/api/date/ListCategorii')
     .success(function (data) {
          $scope.demoOptions.items  = vm.Categoria1 = data;              
       });

Other option is, you can create one function contains that http.get call and call that function on page load :

var vm = this;
vm.Categoria1 = [];

var onload = function(){
    $http.get('http://localhost:5541/api/date/ListCategorii').success(function (data) {
       vm.Categoria1 = data;
    }
}; 

$scope.demoOptions = {
    title: 'Demo: Recent World Cup Winners',
    filterPlaceHolder: 'Start typing to filter the lists below.',
    labelAll: 'All Items',
    labelSelected: 'Selected Items',
    helpMessage: ' Click items to transfer them between fields.',
    /* angular will use this to filter your lists */
    orderProperty: 'name',
    /* this contains the initial list of all items (i.e. the left side) */
    items: vm.Categoria1, //[{ 'id': '50', 'name': 'Germany' }, { 'id': '45', 'name': 'Spain' }, { 'id': '66', 'name': 'Italy' }, { 'id': '30', 'name': 'Brazil' }, { 'id': '41', 'name': 'France' }, { 'id': '34', 'name': 'Argentina' }],
    /* this list should be initialized as empty or with any pre-selected items */
    selectedItems: []
};

onload();