变量传递给=隔离范围不绑定

时间:2015-08-17 21:28:20

标签: javascript angularjs

我正在制定指令,希望公开使用和嘲笑,我发现了一个非常重要的问题,我无法弄清楚它是我的控制器代码还是我的指令。

我有一个变量,我通过' ='传递给指令在隔离范围内。如果我将变量作为对象的子对象传递,它在任何情况下都可以正常工作,但是当我传递一个顶级变量时,它在一种情况下工作,指令所做的任何更改都反映在父范围内,而在第二,指令所做的任何更改都不会在父

中看到

在工作案例中,我没有在变量发送到指令之前定义它。它在指令中被修改,并在父范围内正确显示。

在非工作的情况下,它在被发送到指令之前被定义,但指令中没有任何更改显示在父范围内。

在这两种情况下,我都尝试了预定义和删除发送到指令的变量的任何初始定义;在工作案例中,它继续工作,在非工作案例中,没有取得任何进展。

这是我第一次看到' ='范围变量不会根据指令中所做的更改而改变,而且我不知所措。

不幸的是,我没有工作案例给你看。我把代码放到了一个plnkr来展示一个同事,你可以看到我的所有代码,看看是否有什么东西是错的,而且我会尝试整理一个工作案例,它涉及一个API,围绕它的一堆代码,我怀疑我的简化它使一个工作的plnkr将解决问题,并没有帮助找出我遇到的问题。不幸的是,我甚至不知道我应该直接向您展示哪些代码,因为如果我在这里有代码,那么只允许我链接plnkrs。

基本上我有一个指令

<combobox data="dataList" value="result"></combobox>

数据可以作为字符串数组或此格式的对象数组发送:{ 'value': 'car_3', 'display': 'BMW' }。值作为相同类型的对象返回(如果将字符串数组传递给数据,则将其转换为该格式的对象)。

在案例1中,结果返回指令设置的数据,在情况2中,它永远不会改变(它保持它的初始值。

http://plnkr.co/edit/hUCuZuBu9BUbdwD0V6AO

在plnkr中,main.js包含我的指令,两个案例文件都显示了如何在HTML中调用该指令。我确定那里有一些垃圾代码,因为我一直在调试这个疯狂......

1 个答案:

答案 0 :(得分:0)

嗯,没有看到你的代码听起来非常像你正在处理js原语在子范围内重复的常见(超级令人沮丧!)问题,导致意外的非双向绑定链。您是否在模型上使用点语法来强制原型?

退房: “你的ng模型中没有一个点(或者你需要它的其他地方!)” http://nathanleclaire.com/blog/2014/04/19/5-angularjs-antipatterns-and-pitfalls/