2

テンプレートemployeeのコントローラーからオブジェクトのリストを作成しようとしています。empctrl

コントローラーは次のとおりです。

app.controller('employeeController', function ($scope, employeeService) {

    this.employees = {};

    this.populateTable = function (data) {

        this.employees = data;
    };

    var error = function (err) {
        console.log("Error: " + err);
    };

    // Call Service to List all Employees
    console.log("Service called to populate table.");
    employeeService.output().then(this.populateTable, error);
    this.populateTable();

});

ただし、私が書いたこのコードは機能しません。

<div ng-repeat="employee in empctrl.employees.allEmployees" class="table_row">
    <div class="table_column" style="width:2%">{{ $index + 1 }}</div>
    <div class="table_column" style="width:8%">{{ employee.employeeName}}</div>
    <!-- 7 more columns -->
</div>

UI には何も表示されません。
代わりに$scope.employees、コントローラーに書き込むと、次のように機能します。

<div ng-repeat="employee in employees.allEmployees" class="table_row">

$scope.<everything>コントローラーで行うのがいかに魅力的であるかを知っているので$scope、できるだけ使用しないようにしています。


誰かが and の適切な使用法と違いを示すことができれば( $scopewhereはコントローラーのエイリアスです)、感謝します。alias.abc$scope.abcalias

編集:まったく同じ質問です: 'this' vs $scope in AngularJS controllers

このリンクをありがとう、PankajParkar。

4

3 に答える 3

2

問題は、関数this内でアクセスしているものは、コントローラー関数にあるものではありません。populateTablethis

this変数を変数内に保持して、正しいオブジェクトを参照していることを確認することをお勧めします。

コントローラ

app.controller('employeeController', function ($scope, employeeService) {
    var vm = this;
    vm.employees = {};

    vm.populateTable = function (data) {
        vm.employees = data;
    };

    var error = function (err) {
        console.log("Error: " + err);
    };

    // Call Service to List all Employees
    console.log("Service called to populate table.");
    employeeService.output().then(vm.populateTable, error);
    vm.populateTable();
});

詳細については、この記事を読むことを強くお勧めします

thisvsと混同している場合は、この回答scopeを読んでください

于 2016-02-26T09:01:36.437 に答える
0

変数をlike$scopeではなくthe に追加します。this

$scope.customers = {};

$scope.populateTable = function (data) {
    $scope.employees = data;
};

編集:両方の方法が機能します。詳細な説明については、この記事を参照してください。

于 2016-02-26T09:03:42.737 に答える