问题标签 [angularjs-scope]
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.
angularjs - 如何在 AngularJS 中停止 $watching?
我可以在 AngularJS 范围内设置一个 $watch,以便在我感兴趣的表达式发生更改时收到通知。但是一旦我失去兴趣,我该如何停止观看呢?
angularjs - 具有简单 angularjs 嵌套指令的隔离范围
我已经阅读了有关指令、范围和隔离范围的所有内容。但我仍然无法理解如何完成这项工作。
只要我创建的指令没有嵌套在另一个指令中,它就可以完美地工作。
嵌套时,'localFunc: "&func"' 属性绑定到外部控制器范围就好了,但 'localAttr: "=attr"' 范围失败。
如果有人能帮助我理解原因,我将不胜感激。
angularjs - 在 ngtemplate 中给模型起别名
我希望为模板中使用的模型起别名,以便可以为不同的模型重用相同的模板。例如在以下模型中:
“member”和“children”都具有“name”属性。所以我希望创建一个操纵这个“名称”属性的模板。在这个问题的帮助下,我能够做到这一点:
按照建议,我创建了一个指令,例如:
以下是该指令的用法:
我能够实现模板重用,但是由于我在指令中使用“范围”,这创建了一个无法访问控制器范围的任何属性的隔离范围。所以对于控制器:
指令内的模板无法访问“前缀”属性。以下是jsfiddle:
http://jsfiddle.net/vaibhavgupta007/mVBaC/1/
这可能是什么问题?
编辑
我也可以使用 $parent 来访问前缀。但这是干净的方法。
angularjs - 在AngularJS中不使用时如何从范围中删除?
我已经设置了一个控制器每隔几秒钟打勾,这反过来又对后端 api 进行了一次安静的调用。一切都按预期工作,除非我导航到另一个部分(由单独的控制器处理),滴答声继续触发。
是否可以完全从范围中删除控制器?
这是我当前控制器的粘贴:
angularjs - 在 AngularJS 中,使用 ng-repeat,为什么 $scope 变量会在子级之间发生冲突?
我有一个代表“讨论”或“辩论”的对象,它有两个孩子——每个孩子都是代表辩论中“争用”的孩子对象的集合。一个孩子是“肯定”争论的集合,另一个是“否定”争论的集合。
我正在使用这样的东西:
这将显示两组争用,每组顶部都有一个“添加新争用”表单。表单基于 toggleEditForm() 方法进行切换。我对“新争用”和“编辑争用”使用相同的表单模板,因此该表单有一个模型(单选按钮)来判断争用是“肯定”还是“否定”争用。
控制器“contentionGroupCtrl”用于争用组,它的 toggleEditForm 方法如下所示:
一切都很好,除了:假设您打开“肯定”端的“添加新争用”表单。它将显示一个空白名称,并选择了单选按钮“肯定”。如果您然后单击“否定”侧的“添加新争用”按钮,将出现相应的表单,但两个“名称”字段都将被空白,并且两个单选按钮都将被选中用于“否定”。
$scope 应该在每一边都不同,不是吗?每个表单都使用自己的 $scope.edit 模型;为什么修改否定争用方的“edit.name”和“edit.aff”模型会影响肯定方的?
internet-explorer - AngularJs 指令的模板未在 IE9 中更新
我正在创建一个 AngularJS 的指令。在 Internet Explorer (IE9) 中,它不能按预期工作。它确实用模板替换了原始 html,但不更新模板的插值字符串。
它可以在 Chrome、Firefox 和 Safari 中正常工作
这是代码
这是调用指令的html
angularjs - $scope.headings 数据值在 $http.get 之外未定义
目标:填充具有动态表标题(通过 GET 检索)的表。因此,用于填充表的值(通过另一个 GET 检索)具有可以连接两者的 header_id:
IE
headers = [{name:header1, id:1}, {name:header2, id2}]
list_entries = [{value:'pop', header_id:1},{value:'bop', header_id:3}]
我不能直接在 list_entries 上使用 ng-repeat 来填充表格,因为我必须尊重某些表格单元格将为空的事实(没有与标题匹配的值)。
我想访问 $scope.headings 以便我可以遍历它,然后使用逻辑来匹配它的值(比较 header_id)。
对其他人来说,这似乎是一个愚蠢的问题,但我真的已经尝试过寻找一个好的方法。我真的很感激在这方面被指出正确的方向。
angularjs - 如何在angularjs中显示数组中的一项?
所以我为一个简单的应用程序编写前端,我坚持一件事。有一个新闻列表页面应该将用户带到单个新闻页面。
所有新闻都在一个数组中,它位于新闻控制器中:
这是新闻列表页面,正常工作:
老实说,我不知道如何使一个选定的新闻可见...
angularjs - 在 angular.js 中缓存并设置范围值
我有一个多标签应用程序,有两个单独的控制器。
当输入任一选项卡时,我需要点击一个 API。初始点击后响应不会更新,因此在后续访问该选项卡时无需再次点击它。
我的问题是缓存 API 响应并将其设置为范围变量的正确方法是什么。
目前,我有一个这样的帮助功能设置
像这样的缓存工厂设置
注入到每个控制器中
这很好用,但感觉……很脏。有没有更好的方法来实现同样的目标?
javascript - AngularJS - 将函数调用推迟到完整的浏览器渲染和视图模型同步周期结束
我不确定这个问题的正确标题是什么,所以如果我错了,请纠正我。
假设在页面刷新(加载)时,我需要根据当前位置的哈希值执行动画滚动以锚定(我知道 ngAnchorScroll,但我需要一个动画 scolling,而 ngAnchorScorll 无法做到)。
为此,我实现了一个服务,它将在控制器初始化时调用:
您可能会看到锚点的实现与 ngAnchorScroll 的实现非常相似。主要区别在于我使用 jQuery.animate() 在锚点之间移动。
正如我从这里理解的那样,将函数执行推迟到那一刻,当浏览器完成渲染时,我们只需要使用延迟参数调用 $timeout 服务,该参数等于 0。但这对我不起作用。偶尔页面滚动到不同的位置。我可以这样解释——在摘要循环完成视图和模型的同步之前调用滚动函数,因此在调用时 HTML 块的高度和位置无效。
所以我的问题是:是否可以将函数调用推迟到浏览器完全完成渲染并且摘要周期完成视图和模型的同步(应用绑定)的那一刻?