2014-06-16 56 views
1

我想使用ngModel將兩個文本輸入字段附加到$ scope。這裏是我的代碼:2種方式與玉形式的數據綁定

extends layout 

block content 
    h1 hello from partials 
    form(name='login') 
     label(for='username') username 
      input(type='text' name='username' id='username' ng-model='credentials.username') 
    br 
    label(for='password') password 
     input(type='text' name='password' id='password' ng-model='credentials.password') 
    button(type='submit') submit 

即使我按提交憑證不改變$範圍。它們默認設置爲空字符串,並在提交後保持這種狀態。我的玉表格寫得不正確嗎?

控制器代碼如下所示:

myApp.controller('mainController' , function($scope){ 
    window.scope = $scope; 
    $scope.credentials = {username: '' , password: ''} 
}) 

和layout.jade看起來是這樣的:

doctype html 
html(ng-app='myApp') 
    head 
    title= title 
    link(rel='stylesheet', href='/stylesheets/style.css') 
    body 
    div(ng-controller='mainController') 
    block content 
    script(src='//ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.min.js') 
    script(src='https://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular-route.js') 
    script(src='/javascripts/myApp.js') 
+2

這裏沒有足夠的代碼來確定問題所在。視圖中相關的'ng-controller'對於持有該模型的範圍在哪裏?在視圖中的哪個位置輸出值? –

+0

ng-controller在layout.jade中。我只是第一次測試Angular,所以我不確定是否應該爲每個視圖分配一個ng控制器。這些值不會在任何地方輸出。我只是想看到他們附加$ scope對象。 – user3294779

+0

啊,原來ng控制器需要分配給每個視圖中的div。這完全是訣竅,$範圍現在正在更新。 – user3294779

回答

1

block content不是嵌套的控制器,這就是爲什麼ng-model沒有改變你的下範圍。

這會工作:

div(ng-controller="mainController") 
    block content 

但你可能會希望每個頁面控制器呢(你仍然可以保留這一條,雖然 - 控制器像一個層次,以同樣的方式爲JS原型)