【发布时间】:2013-10-16 11:14:26
【问题描述】:
在我看来,我有一个输入、一个跨度和一个按钮,如下所示:
<script type="text/ng-template" id="myTemplate.html">
<input type="text" ng-model="phoneNumber">
<span>{{ phoneNumber}}</span>
<input type="button" ng-click="click()">
</script>
在文本框中输入时,span 的内容会按预期更新。但是当点击按钮时,phoneNumber 并没有在控制器内部更新:
app.controller('myPopopCtrl', ['$scope', '$modalInstance',
function ($scope, $modalInstance) {
$scope.phoneNumber= '';
$scope.click = function() {
alert($scope.phoneNumber); // alerts only ''
};
您是否会在 Angular 中犯一些新错误,导致控制器内的 $scope 上的内容无法更新?
我需要注意angular-ui modal 的 $scope 问题吗?
编辑:
似乎phoneNumber 是在 2 个作用域中创建的。一次在phoneNumber: '' 的蓝色箭头的范围内,一次在红色箭头的子范围内。视图在子作用域中使用phoneNumber,控制器在父作用域中使用phoneNumber...
为什么要创建两个作用域?
【问题讨论】:
-
点击方法在哪里定义?
-
click 方法是在 popupController 中定义的,(我更新了问题以澄清)
-
那么更好的选择是传递一个对象而不是字符串,因为字符串分配会在子范围内创建一个新字符串。创建类似
$scope.phone={number:null}的内容并传递它。
标签: angularjs angular-ui angular-ui-bootstrap