Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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
Javascript 控制器中未定义Ng模型_Javascript_Angularjs_Ionic Framework - Fatal编程技术网

Javascript 控制器中未定义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

我从控制器读取ng模型时遇到一些“问题”

我想这样做:

<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);
}