对不起,如果这已经被问到,但我真的没有找到任何适用于我的问题。
好吧,虽然我知道一个AngularJS表单值必须从控制器加载,我可以用AngularJS创建路由和RESTful资源,我使用Python和Flask来获取页面和数据,但AngularJS将数据发送到服务器。问题是,当我将"ng-model"放入文本输入时,来自server的值被忽略,如下所示:
<input type="text" ng-model="first_name" value={{user.first_name}}>
被解释为:
<input type="text" ng-model="first_name" value="John" class="ng-pristine ng-valid">
但是无法看到值,好像没有"value"属性。
在这种情况下,我尝试使用指令,但我没有意识到如何获得此服务器数据并与另一个作用域共享。
我想要的是简单地在ng-model输入中加载一个带有服务器数据的页面,然后通过控制器方法访问它("占位符"在这里没用)。
我像这样发送页面:
class ShowUser(MethodView):
def get(self):
s = Session(request)
if s.is_logged():
user = dict({'username': s.user.username, 'first_name': s.user.first_name, 'last_name': s.user.last_name,
'email': s.user.email, 'logged': True})
return render_template('users/show-user.html', user=user)
else:
user = dict({'username': 'null', 'logged': False})
return render_template('index.html', user=user)
这是"用户"变量在"render_template",我试图访问。
如果你不打算去服务器,你可以在页面中写一个angular的.value()
(我假设{{}}来自你的服务器端模板,而不是angular的):
<script>
angular.module('app').value('User', {{user}});
</script>
更好的例子,在EJS中,您可以使用:
<script>
angular.module('app').value('User', <%= JSON.stringify(user) %>);
</script>
必须放在包含初始angular.module('app', [...])
的.js
之后的任何地方
将User
注入控制器和范围;
angular.module('app')
.controller('AppController', ['$scope', 'User',
function($scope, User) {
$scope.user = User;
}
]);
最后,在你的HTML中:
<input type="text" ng-model="user.first_name" />