Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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/7/neo4j/3.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
Javascript 带ng重复的角度JS繁殖ng开关_Javascript_Angularjs - Fatal编程技术网

Javascript 带ng重复的角度JS繁殖ng开关

Javascript 带ng重复的角度JS繁殖ng开关,javascript,angularjs,Javascript,Angularjs,正如天使说的 要匹配的属性值不能是表达式。他们是 解释为要匹配的文本字符串值 但是,如果我想用ng repeat生成我可能需要的所有标记块(比如,一些具有嵌套内容的div),用每个标记块的特定内容填充它,并将每个标记块的ng开关设置为某个变量的值,例如,描述特定标记块的对象的某个id字段。像ng switch when=“{{data.id}}”这样的AFAIK操作将不起作用。我怎样才能达到目标?使用ng开关有可能吗?或者,可能没有这种方法,我必须使用ng,如果或其他什么 正如评论中所问,我将试

正如天使说的

要匹配的属性值不能是表达式。他们是 解释为要匹配的文本字符串值

但是,如果我想用
ng repeat
生成我可能需要的所有标记块(比如,一些具有嵌套内容的div),用每个标记块的特定内容填充它,并将每个标记块的
ng开关设置为某个变量的值,例如,描述特定标记块的对象的某个
id
字段。像
ng switch when=“{{data.id}}”
这样的AFAIK操作将不起作用。我怎样才能达到目标?使用
ng开关
有可能吗?或者,可能没有这种方法,我必须使用
ng,如果
或其他什么

正如评论中所问,我将试图说明我的意思。我说的应该是这样的:

html:


提供一个更好的逻辑示例,说明您希望执行的逻辑,即使它作为开关不起作用。也许自定义指令也会有所帮助。当=“{data.id}}”应该起作用时,很难准确地说出您想要实现的切换——这不是一个表达式,它在AngularJS编译HTML并替换为值时被解释。当=“data.id==1”这个问题现在的措词方式是,它更像是一个开关。您询问的是实现细节,但不是有意义的细节。在您过于简单的示例中,
ng repeat
上的过滤器更合适。我认为如果你能展示你真正想要完成的事情,而不是一个有更好选择的解决方案,那可能会更好。@Claies重点是我正在学习,想知道我是否能用ng switch做这样的事情。重点不是要详细阐述一些实际的解决方案,而是要理解这一点directive@yxfxmx这可能是真的,但实际上这不是该指令的正确用法;在您的示例中,您使用了
ng repeat
(过滤)中已有的功能,并将其卸载到其他功能中。设计
ng switch
的人员确实没有任何理由设计、测试和排除指令是否能够在周围流程已经固有的情况下执行此任务。请提供一个更好的逻辑示例,说明您希望执行的逻辑,即使它作为无法工作的开关。也许自定义指令也会有所帮助。当=“{data.id}}”应该起作用时,很难准确地说出您想要实现的切换——这不是一个表达式,它在AngularJS编译HTML并替换为值时被解释。当=“data.id==1”这个问题现在的措词方式是,它更像是一个开关。您询问的是实现细节,但不是有意义的细节。在您过于简单的示例中,
ng repeat
上的过滤器更合适。我认为如果你能展示你真正想要完成的事情,而不是一个有更好选择的解决方案,那可能会更好。@Claies重点是我正在学习,想知道我是否能用ng switch做这样的事情。重点不是要详细阐述一些实际的解决方案,而是要理解这一点directive@yxfxmx这可能是真的,但实际上这不是该指令的正确用法;在您的示例中,您使用了
ng repeat
(过滤)中已有的功能,并将其卸载到其他功能中。如果指令能够在周围流程中执行此任务,那么设计
ng开关的人员就没有理由设计、测试和排除故障。
<div ng-app="app" ng-controller="appCtrl">
    <div ng-repeat="item in items" ng-switch on="selectedItem">
        <p ng-switch-when="{{item.id}}">{{item.content}}</p>
    </div>
</div>
var app = angular.module("app", []);

app.controller("appCtrl", ["$scope", function($scope) {
    $scope.items = [{id:0, content:"foo"}, {id:1, content:"bar"}];
    // selectedItem should actually be assigned by some user control like radio button but
    // let's simplify and set it manually
    $scope.selectedItem = 0;
}]);