簡體   English   中英

為什么$ scope沒有傳遞給控制器​​?

[英]Why is $scope not getting passed to controller?

由於某種原因,未將$scope.username傳遞給我的控制器。 單擊時, registerUser() $scope.username未定義。 我確實有一個作用域,並且該函數僅運行$ scope.username。

例如:

HTML:

 <input bs-form-control
     type="text"
     ng-model="username"
     label="Username"
     />

<button class="btn btn-primary" ng-click="registerUser()">Register</button>

控制器:

    .controller("loginController", ['$scope',
        function ($scope) {
            $scope.registerUser = function(){
                console.log($scope.username) // <=== undefined!
            }

  }])

我的控制器使用狀態傳遞:

.state('register', {
            url: "/register",
            templateUrl: "/static/html/profile/register.html",
            controller: "loginController"
        })

我認為bs-form-control創建了一個新的隔離范圍。 您應該做的是使用范圍內的對象( 我的ng模型是否真的需要一個點來避免子級$ scope問題? )或使用AngularJS 1.2中引入的新“ constroller as”語法。 它也適用於ui-router!

看到這個矮人: http ://plnkr.co/edit/hkmMGbTtURSHDH84miiK?p=preview

路由:

.state('register', {
    url: "/register",
    templateUrl: "/static/html/profile/register.html",
    controller: "loginController as loginCtrl"
})

模板:

<input bs-form-control type="text" ng-model="loginCtrl.username" label="Username" />
<button class="btn btn-primary" ng-click="loginCtrl.registerUser()">Register</button>

控制器:

使用this代替$scope

.controller("loginController", [
    function () {
        this.registerUser = function(){
            console.log(this.username);
        }
    }
])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM