【发布时间】:2014-03-31 13:23:59
【问题描述】:
我在从控制器读取 ng-model 时遇到一些“问题”。
我想这样做:
<input type="text" ng-model="code">
<button ng-click="setCode()">Login</button>
在我的控制器中访问该变量,如下所示:
$scope.setCode = function(){
alert($scope.code);
}
这就是我想要做的,但我的代码变量未定义。
我找到了 2 种方法来实现这一点:
1) 将变量作为参数传递
<input type="text" ng-model="code">
<button ng-click="setCode(code)">Login</button>
和:
$scope.setCode = function(code){
alert(code);
}
2) 将我的变量声明为对象
<input type="text" ng-model="code.text">
<button ng-click="setCode()">Login</button>
和:
$scope.code = {text: 'foo'};
[...]
$scope.setCode = function(){
console.log($scope.code);
}
(我更喜欢第二个)
但我对我应该做什么有点困惑。可以像对象一样声明我的 ng 模型吗?我必须像对象一样声明我的所有模型?
编辑:Here is a Plnkr of the problem
在这个例子中(我使用Ionic框架),我声明了一个变量代码,值为test,当我在输入中更改模型并按下开始按钮时,理论上我必须在警报中看到模型的新值。但我看到的是旧的。
谢谢!
【问题讨论】:
-
第一个例子应该可以正常工作。
-
确保控制器作用域和设置 ng-model 的作用域相同,ng-if 和 ng-repeat 等指令创建自己的作用域。否则,您的第一个示例应该可以正常工作。
-
@DesigningtheCode 哦,感谢您在 ng-if 上指出,我以这种方式隐藏电子邮件字段并且想知道到底是什么......
标签: javascript angularjs ionic-framework