javascript - 使用路由在 AngularJS 应用程序中进行数据绑定(bind)

标签 javascript angularjs data-binding cordova ionic-framework

我正在使用 Ionic 启动一个新的 Phonegap 应用程序。它依赖于 Angular。

这是 View :

<ion-view title="'Login'" left-buttons="leftButtons">
    <ion-content has-header="true">
        <input type="text" ng-model="new_name" placeholder="Name">
        {{new_name}}
        <input type="text" ng-model="new_text" placeholder="Message..." ng-keydown="addMessage($event)">
    </ion-content>
</ion-view>

Controller :

.controller('LoginCtrl', function($scope) {
        $scope.new_name = "ininame";

        $scope.addMessage = function(e) {
            console.log($scope);
            if (e.keyCode != 13) return;
            console.log({name: $scope.new_name, text: $scope.new_text});
        };
    })

和配置:

.state('eventmenu.login', {
                url: "/login",
                views: {
                    'menuContent' :{
                        templateUrl: "templates/login.html",
                        controller: "LoginCtrl"
                    }
                }
            })

因此 {{new_name}} 在更改上述输入时更新,但 Controller 中 $scope.new_name 的值仍然是“ininame”并且永远不会改变。触发该功能时,console.log 显示如此。

请注意,如果我像这样添加一个带有 ng-controller = "LoginCtrl"的 div :

<ion-view title="'Login to Wallit'" left-buttons="leftButtons">
    <ion-content has-header="true">
        <div ng-controller="LoginCtrl">
        <div ng-repeat="msg in messages"><em>{{msg.name}}</em>: {{msg.text}}</div>
        <input type="text" ng-model="new_name" placeholder="Name">
        {{new_name}}
        <input type="text" ng-model="new_text" placeholder="Message..." ng-keydown="addMessage($event)">
        </div>
    </ion-content>
</ion-view>

它工作得很好。模块配置中 Controller 的绑定(bind)应该与常规 Controller 的工作方式相同!

困惑...在此先感谢您的帮助!

最佳答案

读一读:http://jimhoskins.com/2012/12/14/nested-scopes-in-angularjs.html

本质上,您需要更好地理解嵌套作用域的工作原理。如果将模型值封装在容器对象中,您遇到的问题应该会消失。

ng-model="mycontainer.new_name"
{{mycontainer.new_name}}
$scope.mycontainer.new_name = 'ininame';

关于javascript - 使用路由在 AngularJS 应用程序中进行数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22289690/

相关文章:

javascript - 如何将数据从弹出脚本发送到crossrider中的background.js?

javascript - 在类名末尾添加一个整数

javascript - AngularJS 中 ngModel 指令的范围是什么?

wpf - 如何使用 XAML 绑定(bind)到 GridView 的 ColumnCollection

c# - 如何将 DataContext 设置为多个类?

javascript - 保存 'dot' 符号?

javascript - JW Player 6 寻找和暂停

javascript - 应用程序可以工作,但其中的第一个 Controller 失败

javascript - 从数据库中提取数据并在 Angular 中显示

c# - 将自定义对象列表绑定(bind)到 Combobox(DisplayMember 不工作)