Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用AngularJS在选项标记上有条件地设置类_Angularjs_Angularjs Directive - Fatal编程技术网

使用AngularJS在选项标记上有条件地设置类

使用AngularJS在选项标记上有条件地设置类,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我为一个问题挣扎了几天。我试图根据绑定到的模型中的值将类应用于选项标记。我尝试使用本文()所描述的ng类,但没有成功。然后我试着使用那篇文章中的指令,但也不起作用。我的问题似乎出现在表达式中,因为它要么始终为真,要么始终为假,并且从不基于模型中的值。我不确定这是否与$parse处理表达式的方式有关。以下是视图: <div class="col-md-2"> <div class="merchant-list"> <input type="ch

我为一个问题挣扎了几天。我试图根据绑定到的模型中的值将类应用于选项标记。我尝试使用本文()所描述的ng类,但没有成功。然后我试着使用那篇文章中的指令,但也不起作用。我的问题似乎出现在表达式中,因为它要么始终为真,要么始终为假,并且从不基于模型中的值。我不确定这是否与$parse处理表达式的方式有关。以下是视图:

<div class="col-md-2">
    <div class="merchant-list">
        <input type="checkbox"
            ng-model="allMerchants"
            ng-change="allMerchants_Changed()">All merchants<br />
        <select size="10"
            ng-model="overviewCtrl.currentMerchant"
            ng-options="item.Id as item.Name for item in allMerchantData"
            ng-disabled="allMerchants"
            ng-change="currentMerchant_Changed()"
            options-class="{ 'merchant-item-waiting':item.status=='w','merchant-item-error':item.status=='e','merchant-item-loaded':item.status=='l'}"
            >
            <option value="">--All Merchants--</option>
        </select>
        <p>Current Merchant: [{{ overviewCtrl.currentMerchant }}]</p>
    </div>
</div>
作为参考,以下是指令,您无需访问:


正如您所怀疑的,它与$parse有关

你写

options-class="{ 'merchant-item-waiting':item.status=='w','merchant-item-error':item.status=='e','merchant-item-loaded':item.status=='l'
请注意您是如何显式引用
item.status
的。按照最初的示例,您应该只编写
status

为什么会这样?查看$parse($parse)的文档,我们可以看到以下部分:

Returns function(context, locals) - a function which represents the compiled expression:

context – {object} – an object against which any expressions embedded in the strings are evaluated against (typically a scope object).
在指令中,我们有以下部分:

var classes = getOptionsClass(item),

这意味着在本例中,您可以将项(其中一个选项)视为类似于作用域,即您不会在代码中写入
scope.status
,而只是引用
status

谢谢您!就是这样。感谢您发现问题并详细解释。我能感觉到我的头发不再那么灰白了。
Returns function(context, locals) - a function which represents the compiled expression:

context – {object} – an object against which any expressions embedded in the strings are evaluated against (typically a scope object).
var classes = getOptionsClass(item),