-2

我创建了一个指令,它应该在加载时显示国家列表。当用户再次访问该页面时(在 SPA 内导航后),它应该“记住”所选国家。我将所选国家/地区保存在服务中,当页面再次加载时,我从服务中获取国家/地区,并将其存储在指令内绑定到选择框模型的“scope.country”var中.

模板:

<select ng-model="country" ng-options="country.Name for country in data.countries" class="form-control">
    <option value="">Country</option>
</select>

指示:

.directive('ggCountry', ["$http", function ($http) {
    return {
        templateUrl: '../../Common/js/angular/directives/templates/CountryDropDown.html',
        scope: {
            country: '=ngModel'
        },

        link: function (scope, element, attrs) {
            scope.data = {};
            scope.data.countries = [];
            $http.post("../Common/GetAllCountries", {}).then(function (answer) {
                scope.data.countries = answer.data.d;
                // select the country:
                if (scope.country != undefined) {
                    // using underscore library for the selection
                    scope.country = _.where(scope.data.countries, { Id: scope.country.Id });
                }
            });
        }
    };
}])

在选择国家并将其设置为选择下拉列表的模型后,我希望视图会发生变化,并且会选择这个国家,但由于某种原因它不会那样做。

4

1 回答 1

0

好吧,那很愚蠢:)

我使用了 _.where(...) 函数,它返回一个数组,它不能是选择下拉列表的模型。

为了修复它,我将 _.where() 更改为 _.findWhere() ,它返回可以绑定的国家对象,并且一切正常。

于 2015-04-28T09:47:17.123 回答