Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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
Angularjs Angular.js。使用服务时双向数据绑定中断_Angularjs - Fatal编程技术网

Angularjs Angular.js。使用服务时双向数据绑定中断

Angularjs Angular.js。使用服务时双向数据绑定中断,angularjs,Angularjs,问题是,当我在字段中输入文本时,SecondName属性没有更新 请在JSFIDLE上查看以下代码: HTML: 它不会像你认为的那样工作。这一行: obj.SecondName = obj.FirstName; 创建一个新属性SecondName,该属性的值等于FirstName。但是,由于这两个属性都是基本类型(String),因此它们之间没有连接。换句话说,obj.SecondName不引用obj.FirstName 你有两个选择 选项1。(坏)在FirstName更改上设置额外的监视程

问题是,当我在字段中输入文本时,SecondName属性没有更新

请在JSFIDLE上查看以下代码:

HTML:


它不会像你认为的那样工作。这一行:

obj.SecondName = obj.FirstName;
创建一个新属性
SecondName
,该属性的值等于
FirstName
。但是,由于这两个属性都是基本类型(
String
),因此它们之间没有连接。换句话说,
obj.SecondName
不引用
obj.FirstName

你有两个选择

选项1。(坏)
FirstName
更改上设置额外的监视程序,一旦发生更改,分别更新
SecondName

$scope.$watch('Data.FirstName', function() { Data.SecondName = Data.FirstName; });

选项2。不要引入额外的观察者并更改您的体系结构。例如,在第二个控制器中也使用
FirstName
,因为它们应该相等


由于嵌套的作用域,这是一个范围问题。请查看此网站以获得明确的解释:。在嵌套作用域部分中有几种不同的解决方案可以解决您的问题。

代码的问题在于第一个控制器只是在更改
数据的值。FirstName
对象,因此,这些更改不会反映在第二个控制器上,因为SecondName的值在第一个控制器中初始化后不会更改。因此,您必须设置
数据。SecondName
在您的数据中也是如此

或者,您也可以这样做

 <div>
         <input type="text" ng-model="Data.FirstName"><!-- Input entered here -->
         <br>FirstName is : <strong>{{Data.SecondName=Data.FirstName}}</strong><!-- Successfully updates here -->
      </div>


名字是:{{Data.SecondName=Data.FirstName}
您也可以使用指令来实现此功能,但我想您只是在寻找上述解决方案


干杯

谢谢PSL,它帮助了我。更改代码使其没有嵌套作用域是没有帮助的。无论如何,谢谢你的文章,它很有趣。谢谢你,这似乎很有效!我必须使用'bad'选项,因为实际上在我的代码中'SecondName'属性改变了,并且不等于'FirstName'。
$scope.$watch('Data.FirstName', function() { Data.SecondName = Data.FirstName; });
 <div>
         <input type="text" ng-model="Data.FirstName"><!-- Input entered here -->
         <br>FirstName is : <strong>{{Data.SecondName=Data.FirstName}}</strong><!-- Successfully updates here -->
      </div>