问题标签 [angularjs-ng-repeat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 更新数组时AngularJS不刷新ngRepeat
有时我在理解 AngularJS 时遇到了严重的问题。所以我的控制器中有一个基本数组,比如
我在我的模板中对项目数组 ng-repeat="item in items" 进行 ngRepeating。到目前为止超级简单。在进行了几次 UX 操作之后,我想将一些新内容推送到我的阵列中。
因此,50% 的时间,新元素被添加到视图中。但剩下的 50%,什么都没有发生。这就像超级令人沮丧;bc 如果我将其包装在 $scope.$apply() 中,我会收到“$digest already in progress”错误。将其包装到 $timeout 也无济于事。
当我使用 Chrome 扩展检查我的元素范围时;我可以看到新数据在那里并且 $scope.items 值是正确的。但是视图只是没有考虑将其添加到 DOM 中。
谢谢!
angularjs - 在 ng-repeat 中获取未知密钥
当我尝试对哈希数组执行 ng-repeat 时,似乎键变成了索引。那么我怎样才能得到这样一个对象的关键呢?
当我在课程中做 ng-repeat="(key, course)"
key 只是索引 0 和 1。
我需要得到“3000:501:001”和 key 所指的对象。我不知道键名。
angularjs - 如何从angularjs中的选择更新属性
我正在使用 Angularjs 和 rails 来构建网站。该页面正在管理一个 Foo 对象,而 Foo 有一个名称字段和一个定义字段。
在我的编辑页面中,我正在处理 Foo 对象 1,并且我有一个选择(下拉)控件,其中包含可供选择的现有 Foo 对象的列表(过滤掉当前的 Foo 对象是有意义的)
如果用户从选择中选择了一个现有的 Foo 对象,我不想更改我正在编辑的 Foo 对象,我只希望当前 Foo 对象的定义字段使用来自所选 Foo 对象的定义字段内容进行更新(来自选择框)。
我目前有一个这样定义的选择:(并且 obj 是我正在处理的 Foo 对象)
在 changeFooDefinition() 方法中,我想用所选的 Foo 对象的定义更新当前的 obj.definition。
当前代码所做的是更改整个表单中我正在处理的 Foo 对象。我只想将选定的定义复制到当前的对象定义中。我怎样才能做到这一点?
提前致谢,
最大限度
angularjs - AngularJS ng-options 在 ng-repeat 中的自定义指令中
你能帮我找到一种方法来设置和获取放置在我的自定义指令中的选择元素值吗?
这就是我所拥有的:
我有两个数组:类别和状态。每个类别都可以有自己的状态。选择类别的状态后,应将其保存到 selectedStatus 以最终获得类似[{CategoryId:1,StatusId:2},{CategoryId:2,StatusId:3}]
. 如果 selectedStatus 已经初始化,我想查看相应类别的选择状态,这意味着我还需要输入值,而不仅仅是读取它们。
谢谢你。
演示:小提琴
angularjs - 从 ng-repeat 过滤更新时,AngularJS 过滤结果不更新
使用 AngularJS ng-repeat
,我正在过滤人员列表。结果人员的列表被传递给一个变量filtered
。我想显示filtered.length
.
当我调整过滤器时,过滤器可以正常工作并显示正确的人,但是有多少人(即filtered.length
)的计数有时不会更新。
这似乎很奇怪:
但是,如果我filtered.length
在页面底部显示 之后ng-repeat
,它似乎可以工作。如果我把它放在顶部,它只有 80% 的时间有效。
angularjs - AngularJS中带有ng-repeat范围的指令隔离范围
我有一个带有隔离范围的指令(以便我可以在其他地方重用该指令),当我将此指令与 一起使用时ng-repeat
,它无法工作。
我已阅读有关此主题的所有文档和 Stack Overflow 答案并了解这些问题。我相信我已经避免了所有常见的陷阱。
所以我知道我的代码由于ng-repeat
指令创建的范围而失败。我自己的指令创建了一个隔离作用域,并对父作用域中的对象进行双向数据绑定。我的指令将为这个绑定变量分配一个新的对象值,并且当我的指令不使用ng-repeat
(父变量正确更新)时,这可以完美地工作。但是,使用ng-repeat
时,赋值会在ng-repeat
范围内创建一个新变量,而父变量看不到更改。根据我所阅读的内容,所有这些都符合预期。
我还读到,当给定元素上有多个指令时,只会创建一个范围。并且priority
可以在每个指令中设置 a 来定义指令的应用顺序;指令按优先级排序,然后调用它们的编译函数(在http://docs.angularjs.org/guide/directive搜索单词优先级)。
所以我希望我可以使用优先级来确保我的指令首先运行并最终创建一个隔离范围,并且在ng-repeat
运行时,它重新使用隔离范围,而不是创建一个原型继承自父范围的范围。ng-repeat
文档声明该指令以优先级运行1000
。不清楚1
是更高的优先级还是更低的优先级。当我在指令中使用优先级1
时,它没有任何区别,所以我尝试了2000
. 但这让事情变得更糟:我的双向绑定变成undefined
了,我的指令不显示任何东西。
我创建了一个小提琴来展示我的问题。priority
我已经在我的指令中注释掉了设置。我有一个名称对象列表和一个名为的指令,该指令name-row
显示名称对象中的名字和姓氏字段。单击显示的名称时,我希望它selected
在主范围内设置一个变量。名称数组、selected
变量name-row
使用双向数据绑定传递给指令。
我知道如何通过在主范围内调用函数来使其工作。我也知道,如果selected
在另一个对象内部,并且我绑定到外部对象,事情就会起作用。但我目前对这些解决方案不感兴趣。
相反,我的问题是:
- 如何防止
ng-repeat
创建原型从父范围继承的范围,而是让它使用我的指令的隔离范围? - 为什么
2000
我的指令中的优先级不起作用? - 使用 Batarang,是否有可能知道正在使用什么类型的范围?
javascript - ng-repeat验证条件中的Angular.js多个输入
我得到了一切正常,除了一件事。我myForm
需要$valid = true
如果
- 所有输入都已填充
- 未填写任何输入
$valid = false
如果_
- 一些(但不是全部)输入已填充
请注意,这都在 ng-repeat 和 ng-form 子表单中。
我该怎么做?有什么办法吗?
angularjs - 如何使用单个指令和每个选项卡的自定义标签字段在 AngularJS 中创建对象驱动选项卡?
AngularJS 主页上的示例使用两个指令创建选项卡:一个用于选项卡,一个用于窗格。是否可以像这样创建一个模板和一个指令:
HTML:
JS:
(见这个小提琴说明我的问题:http: //jsfiddle.net/2GXs5/3/)
据我目前了解,因为ng-repeat
是它自己的指令,它会自动执行它自己的事情,我无法访问object
范围内的属性,比如我是否想在指令的链接函数中执行此操作:scope.label = scope.object['scope.labelprop']
此外,我仍在尝试围绕插值、嵌入等进行思考,因此解决方案可能会以某种方式涉及到这一点。
angularjs - In AngularJS how to get the new index of an array element after sorting?
This snippet shows my problem nicely:
Important parts:
As you can see, the index always goes from 0 to 6 even when re-sorting the array, so the highlight doesn't move with the item.
How can I get the highlight to stick to the item it's originally at?
angularjs - Angularjs $resource not working with an array returned from a REST API
I am trying to learn angularjs, and have hit a block in trying to databind to an array returned from a Rest API. I have a simple azure api returning an array of person objects. Service url is http://testv1.cloudapp.net/test.svc/persons.
My controller code looks like:
My html looks like:
Question: The table in above html is not displaying any data. I can see the call to the api in Firebug, and can also see the JSON response from the api. What am I doing incorrectly that is causing the databinding to the REST api not work?
PS:JSFiddle demonstrating this issue is at: http://jsfiddle.net/jbliss1234/FBLFK/4/