Javascript 控制器中未定义Ng模型
我从控制器读取ng模型时遇到一些“问题” 我想这样做:Javascript 控制器中未定义Ng模型,javascript,angularjs,ionic-framework,Javascript,Angularjs,Ionic Framework,我从控制器读取ng模型时遇到一些“问题” 我想这样做: <input type="text" ng-model="code"> <button ng-click="setCode()">Login</button> 这就是我想要做的,但是我的代码变量没有定义 我找到了两种方法来实现这一点: 1) 将变量作为参数传递 <input type="text" ng-model="code"> <button ng-click="setCode(c
<input type="text" ng-model="code">
<button ng-click="setCode()">Login</button>
这就是我想要做的,但是我的代码变量没有定义
我找到了两种方法来实现这一点:
1) 将变量作为参数传递
<input type="text" ng-model="code">
<button ng-click="setCode(code)">Login</button>
2) 将我的变量声明为对象
<input type="text" ng-model="code.text">
<button ng-click="setCode()">Login</button>
(我更喜欢第二个)
但是我有点困惑我该怎么做。可以像对象一样声明ng模型吗?我必须像对象一样声明所有模型
编辑: 在这个示例中(我使用的是框架),我声明了一个带有值测试的变量代码,当我在输入中更改模型并按下开始按钮时,理论上我必须在警报中看到模型的新值。但我看到的是旧的
谢谢 您的第一个示例正在运行 如果未在输入字段中输入任何文本而按下按钮,则会收到一条警报
未定义
$scope.code
在您向其绑定字段输入某个内容时被定义ng model=“code”
您也可以在控制器中将其初始化为默认值:
$scope.code = 'my default value';
我修复了使用对象模型而不是基元类型的plnkr示例
$scope.model = {};
$scope.model.code = "test";
$scope.setCode = function(){
alert($scope.model.code);
}
请参阅。爱奥尼亚的指令将创建新的作用域,如果您想直接使用controller中的code对象,必须在HTML页面中将ng controller设置为ion content,而不是路由器状态。第一个示例应该可以正常工作。请确保controller作用域和设置ng模型的作用域相同,像ng if和ng repeat这样的指令创建它们自己的作用域。否则,您的第一个示例应该可以正常工作。@设计代码oh thx用于指出ng if,我以这种方式隐藏电子邮件字段,并想知道到底是什么……我已经尝试过了,但都是一样的。下面是正在发生的事情的一个例子。谢谢非常感谢。我有一个和OP类似的问题,你的方法解决了。你知道为什么OP的代码在plnkr中不起作用吗?他在Erik的回答中以评论的形式分享了OP的代码?@TadDonaghe你可以查看讨论。我不熟悉ionic框架,但我认为
标签
和按钮
标签将在这里引入新的范围,因此我们只能使用非基本对象来传递引用。
$scope.code = {text: 'foo'};
[...]
$scope.setCode = function(){
console.log($scope.code);
}
$scope.code = 'my default value';
$scope.model = {};
$scope.model.code = "test";
$scope.setCode = function(){
alert($scope.model.code);
}