Ng-model does not update controller value
probably have我愚蠢的问题,但简单的HTML表单和输入和按钮:P></
1 2 3 | <input type="text" ng-model="searchText" /> <button ng-click="check()">Check!</button> {{ searchText }} |
然后在模板和控制器控制器是routeprovider called from):P></
1 2 3 | $scope.check = function () { console.log($scope.searchText); } |
为什么我看到的视图中正确但updated Undefined clicking the button when the控制台?P></
谢谢!P></
更新:似乎我真的solved(之前有问题,为后续工作:with some with)我只改变我
"如果你使用NG的模特,你有一个点在那里。"
一个object.property点使你的模型和你会是好去。
控制器
1 2 3 4 | $scope.formData = {}; $scope.check = function () { console.log($scope.formData.searchText.$modelValue); //works } |
模板
1 2 | <input ng-model="formData.searchText"/> <button ng-click="check()">Check!</button> |
当发生这种情况的范围是在播放的儿童或儿童路线吴样重复序列。孩子的范围创建它自己的价值和一名本土的冲突是在AS画报:
湖本视频剪辑更多:http://如何/手表吗?V=sbwofkrjzve AT&;T = 3m15s
控制器的版本(推荐)。
在这里,模板
1 2 3 | <input type="text" ng-model="$ctrl.searchText" /> <button ng-click="$ctrl.check()">Check!</button> {{ $ctrl.searchText }} |
在JS
1 2 3 4 5 6 7 | angular.module('example', []) .controller('myController', function() { var vm = this; vm.check = function () { console.log(vm.searchText); }; }); |
例:http:/ / / / / rjawoo codepen.io damax笔
最好的组件将使用1.5或2个角或角上
# # # # # # # #
老单(不推荐)
这是不推荐的,因为一个字符串是一个原始,强烈推荐使用对象而不是
试试这个在你的标记
1 2 3 | <input type="text" ng-model="searchText" /> <button ng-click="check(searchText)">Check!</button> {{ searchText }} |
这在你的控制器
1 2 3 | $scope.check = function (searchText) { console.log(searchText); } |
在Web应用程序开发和掌握p.19 angularjs图书,它是这样写的
Avoid direct bindings to scope's properties. Two-way data binding to
object's properties (exposed on a scope) is a preferred approach. As a
rule of thumb, you should have a dot in an expression provided to the
ng-model directive (for example, ng-model="thing.name").
只是JavaScript对象的范围是,在DOM层次模拟。根据JavaScript的原型继承,范围属性是通过分隔的范围。为了避免这一点,应该使用bind、符号模型。
而不是使用
1 2 3 4 5 6 | function AppCtrl($scope){ $scope.searchText =""; $scope.check = function () { console.log("You typed '" + this.searchText +"'"); // used 'this' instead of $scope } } |
1 2 3 4 5 6 | <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"> <input ng-model="searchText"/> <button ng-click="check()">Write console log</button> |
编辑:在写作本的答案时,我有更多的情况比这复杂。评论后,我试图复制它明白,为什么它的作品,但没有运气。我认为人(不要真的知道为什么A Child)范围是新生成和
如果有人有这将是伟大的测试问题和美国这样的通知。
我有同样的问题,它需要什么,由于我declaring空白的对象顶部的第一控制器:
1 2 3 | $scope.model = {} <input ng-model="model.firstProperty"> |
希望这将对你的作品!
我是在同样的问题时,使用一个非平凡的视图(有嵌套作用域)。这是一个已知的发现终于和狡猾的东西,当应用到发展中国家angularjs尽职的原型继承自然的基于Java的脚本。这是通过创建angularjs嵌套范围机制。从价值创造和NG是放置在模型的范围需要的儿童,家长说(也许是注入到一个范围控制器不会看到阴影的价值的价值,所以任何一个想物业名称定义在父范围如果需要使用一个参考点A的原型执行的访问。更多的细节,视频在线检测具体说明这个问题,egghead.io http:/ / /视频/ angularjs的斑点/跟进和评论它。
有一个看这个小提琴http:/ / / / msjql jsfiddle.net ganarajpr
我(我认为)。做什么你做,也和它似乎工作。你能检查什么是不是你在这里?
因为没有人提到这个问题的解决可以通过添加到绑定
1 2 | <input type="text" name="login" class="form-control" ng-model="$parent.ssn" ng-pattern="/\d{6,8}-\d{4}|\d{10,12}/" ng-required="true" /> <button class="button-big" type="submit" ng-click="BankLogin()" ng-disabled="!bankidForm.login.$valid">Logga in</button> |
和控制器
1 2 3 4 5 6 7 | app.controller("LoginController", ['$scope', function ($scope) { $scope.ssn = ''; $scope.BankLogin = function () { console.log($scope.ssn); // works! }; }]); |
我的问题是我的袜子我的数据和对象(这里的"数据")。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | NgApp.controller('MyController', function($scope) { $scope.my_title =""; // This don't work in ng-click function called $scope.datas = { 'my_title' :"", }; $scope.doAction = function() { console.log($scope.my_title); // bad value console.log($scope.datas.my_title); // Good Value binded by'ng-model' } }); |
它会帮助我跳
我也面临同样的问题…对我有效的解决方法是使用这个关键字……
警报(this.modelname);
我也有同样的问题。正确的方法是将"searchText"设置为对象内的属性。
但如果我想保持原样,一根绳子呢?嗯,我试过这里提到的每一种方法,都没用。但后来我注意到问题只在初始阶段,所以我刚设置了value属性,它就工作了。
1 | <input type="text" ng-model="searchText" value={{searchText}} /> |
这样,该值就被设置为"$scope.searchText"值,并且在输入值更改时会被更新。
我知道这是一个解决办法,但对我来说是有效的。
你可以做的是使在一个
1 2 3 4 5 6 7 8 9 10 11 12 13 | <input type="text" ng-model="searchText" ng-keypress="keyEnter(this,$event)" /> <button ng-click="check(searchText)">Check!</button> in the controller $scope.search = function (searchText) { console.log(searchText); } $scope.keyEnter = function (serachText,$event) { var keyCode = $event.which || $event.keyCode; if (keyCode === 13) {//KeyCode for Enter key console.log(searchText); } } |
我只是有这个问题是使用一根_ BODY元素结合到控制器。然后我使用NG视图与角的路由器。问题是,他们总是一个新的角位置范围当它插入到HTML视图元素的NG。作为一个结果,我的"检查"功能是定义在父范围的范围,是吴模型修改的元素。
解决这一问题,只是在使用专用控制器的路径加载的HTML内容。