Angular ngOptions将string:添加到value之前

时间:2016-01-26 21:42:12

标签: javascript angularjs

我试图为Angular构建一个指令,该指令放置一个标签并选择所有必需的类。我的指令代码如下所示:

forEach()

我称之为使用它:

  return {
        restrict: 'E',
        scope: {
            text: '=',
            model: '=',
            options: '='
        },
        template: "<div class='form-group'><label class='control-label'>{{text}}</label><select class='form-control' ng-model='model' ng-options='option.env as option.name for option in options'></select></div>"

在我的控制器中,环境定义如下:

 <select-input text="'Environment'" options="environments" model="request.Environment"></select-input>

但是,当Angular将指令转换为HTML时,会导致

$scope.environments = [
        { name: 'PROD', env: 'prod' },
        { name: 'N', env: 'n0' },
        { name: 'N1', env:'n1' },
        { name: 'N0', env: 'n2' },
    ];

我很困惑为什么字符串:有值属性..

3 个答案:

答案 0 :(得分:3)

使用追踪&#39;属性&#39;

像这样:

<select ..... ng-options="option.env as option.name for option in options track by option.env"

答案 1 :(得分:0)

您并不需要担心//Function to inject our custom WHERE clauses function so_34594266_post_where( $where, &$wp_query ) { //Somehow this function needs to be made "aware" of the $id variable, //either a class-level variable, global (yuck) or some function call if( $wp_query->is_main_query() ) { $where = "keyone = 1 or FIND_IN_SET($id, `keytwo` ) <>0"; } return $where; } //Tell WordPress to use our function add_filter( 'post_where', 'so_34594266_post_where' ); //Get our posts (this could also be a WP_Query object or whatever else) $posts = get_posts( '...your stuff here...' ); //Tell WordPress to stop using our function remove_filter( 'post_where', 'so_34594266_post_where' ); 属性是什么,因为它在内部使用。

请记住,value可以配置为将不同类型的值传递给模型...字符串,对象,数组,数字等。

因此,检查您所拥有的值时,您明确表示您为其配置的ng-options值为字符串,如果选中,则会为模型分配typeof

要记住的另一件事是,在渲染过程中角度必须在选择上设置现有模型值时,您不会看到反向绑定

说实话,我从来没有见过你指出的这个价值协议。当您因错误的"prod"语法而被绊倒时,它看起来很有帮助。我猜这是一个功能,已经添加到更新版本的角度......但我可能是错的,这只是因为我没有必要在选项标签级别挖掘dom而

答案 2 :(得分:0)

基于charliefl的回复,我将选项的来源更改为对象

  $scope.environments = {
        prod: 'PROD',
        n0: 'N',
        n1: 'N1',
        n2: 'N2'
    };

并将ng-options子句修改为key as value for (key,value) in options。根据文档,这是一个select子句,select和options的值将是属性名称,在这种情况下,是prod,n0等,它们对应于模型环境的值值。