2014-06-16 82 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原型)