【问题标题】:Angularjs select with ng-options calling a function?Angularjs 使用 ng-options 选择调用函数?
【发布时间】:2014-07-06 08:45:21
【问题描述】:

这是我的html

 <select ng-model="selectedMarker" ng-options="shape.text for shape in Selects('shapes')">
            </select>

和代码

 angular.module('todo', ['ionic'])
        .factory('Projects', function ($http) {
            return {
                options: function (type) {
            var selects = [{
                type: "shapes",
                list: [{
                    text: "Circle",
                    value: "S"
                }, {
                    text: "Polygon",
                    value: "P"
                }]
            }];
            var _filter = selects.filter(function (item) {
                if (item.type === type) {
                    return item.list;
                }
            });
            return _filter;
        },
     })
        .controller('TodoCtrl', function ($scope, $timeout, $ionicModal, Projects, $ionicSideMenuDelegate) {
            $scope.map = null;
            $scope.Selects = function (type) {
                var x= Projects.options(type);
                return x;
            }
    });

这会导致呈现一个空选择。我将 $scope.Selects 替换为数组而不是调用函数,但随后选择被填充。为什么 ng-options 不适用于函数?我的选择标签有什么问题吗?

【问题讨论】:

    标签: javascript jquery angularjs angularjs-scope angularjs-service


    【解决方案1】:

    你的实现是错误的(更不用说过于复杂了)。

    options 函数返回原始的 selects 数组,而不是 shapes 数组。
    目前尚不清楚您到底想达到什么目标,但如果您将 var xx = _filter[0]; 更改为 var xx = _filter[0][type]; 它应该可以工作。

    我强烈建议你仔细看看你正在使用的函数做了什么(例如filter),因为你可能会遇到惊喜......

    【讨论】:

    • 啊抱歉,我的选项定义错误。我这样做是因为我会有很多选择,所以我想把它全部保存在一个数组中并用一个参数查询它,让它看起来更干净一些。
    猜你喜欢
    • 2017-12-31
    • 2012-10-14
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    相关资源
    最近更新 更多