我刚刚给出了AngularJs的第一步,我有一个问题,也许你可以帮助理解我得到的结果的原因。 以下是jsBin的链接,使其更易于理解:https://jsbin.com/fososikosi/edit?html,js,output
如果我在输入框中写“人”,它将显示(在H2内)问候语信息,该信息应为“false”。当我点击“打招呼”时,H2内容将会更新。到目前为止一切都很好。
但是在输入中写“人”,让我们把“person.name”。 显然,名称将不会显示,因为它与ParentController上的“person”无关。 但是,然后,我点击“打招呼”,并且该信息不会在H2上更新(它保持空白)。我的问题是,为什么?因为如果我擦除并再次写入“person.name”,它将被正确显示。我怎么能像我期待的那样让它更新?
希望我很清楚,谢谢你=)
答案 0 :(得分:0)
这似乎不像手表问题那样是一个范围问题。 h2
元素更改的唯一方法是parsedExpr
更改。但是,这只发生在$watch
内。当您点击“Say Hello”person.name
正在更新时,但由于手表基于expr
,并且expr
没有变化,因此手表不会t fire,h2
元素未更新。要修复它,你需要以某种方式触发手表,或者将手表内的代码移动到一个函数中(在父控制器上最好)并从sayHello()
调用它。