【问题标题】:Add space to <select> with ng-options使用 ng-options 为 <select> 添加空间
【发布时间】:2014-01-23 21:05:57
【问题描述】:

如何使用 Angular ng-options 在 &lt;select&gt; 选项中添加前导空格?

<div ng-controller="MyCntrl">
    Static values (works)
    <select>
        <option value="black">black</option>
        <option value="white">&nbsp;white</option>
        <option value="red">&nbsp;&nbsp;red</option>
        <option value="blue">&nbsp;&nbsp;&nbsp;blue</option>
        <option value="yellow">&nbsp;&nbsp;&nbsp;&nbsp;yellow</option>
    </select>

    Values from JS using angular (only the first-default works)
    <select ng-model="color" ng-options="c.name for c in colors">
        <option value="">&nbsp;&nbsp;&nbsp;default</option>
    </select>
</div>

JS:

    angular.module("myApp", []).
    controller("MyCntrl", ['$scope', function ($scope) {
        $scope.colors = [{
            name: 'black',
            shade: 'dark'
        }, {
            name: '&nbsp;white',
            shade: 'light'
        }, {
            name: '&nbsp;&nbsp;red',
            shade: 'dark'
        }, {
            name: '&nbsp;&nbsp;&nbsp;blue',
            shade: 'dark'
        }, {
            name: '       yellow', // spaces here
            shade: 'light'
        }];
    }]);

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    您可以格式化选项文本:

    <select ng-model="color" ng-options="('&nbsp;'+c.name) for c in colors">
        <option value="">&nbsp;default</option>
    </select>
    

    编辑

    如果您想动态生成&amp;nbsp;,它会稍微复杂一些。假设你的控制器中有一个函数知道你想添加多少&amp;nbsp;,那么你可以这样写这个函数:

    $scope.addSpaces= function(color){
        var count = 1;// put your logic here
        var result = "";
        for(var i=0; i<count; i++){
            result+= String.fromCharCode(160);
        }
        return result;
    };
    

    在您的 html 中它将是:

    <select ng-model="color" ng-options="(addSpaces(c)+c.name) for c in colors">
        <option value="">&nbsp;default</option>
    </select>
    

    这是因为我们在字符串中连接了&amp;nbsp;(例如&amp;#160;)的unicode字符而不是实体,所以element.text()函数没有什么可以转义的。

    【讨论】:

    • 谢谢,这可能很方便,但是,如何添加不同数量的空格?例如,白色前 1 个空格,红色前 2 个空格,蓝色前 3 个空格……我猜这必须在 JS 中完成,但无论我尝试什么都返回字面意思  在选项中可见。
    • String.fromCharCode(160) - 这就是我一直想念的。非常感谢!
    • 你也可以在 $scope.colors 中将 160 个字符放入你的名字字符串中
    • 太棒了,如果已经设置了逻辑,这有助于我将其纳入选择,干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 2014-12-12
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    相关资源
    最近更新 更多