this.content未使用模板

时间:2015-08-08 05:29:06

标签: javascript ember.js

我有以下模板

  <script type="text/x-handlebars" id="friends/new">
    <label>First Name</label>
    {{input value=firstName}}<br />

    <label>Last Name</label>
    {{input value=lastName}}<br />

    <label>About</label>

    {{textarea value=about}}<br />
    <button {{action "create"}} {{bind-attr disabled=isInvalid}}>Create</button>
  </script>

我将数据放入所有字段,然后单击“创建”按钮,该按钮将转到以下控制器

App.FriendsNewRoute = Ember.Route.extend({
    model: function(){
        return { firstName: "", lastName: "", about: ""}
    }
});
App.FriendsNewController = Ember.Controller.extend({
    needs: "friends",
    isInvalid: true,

    validForm: function(){

        if(this.get('lastName') && this.get('firstName')){
            this.set("isInvalid", false);
        } else {
            this.set("isInvalid", true);
        }

    }.observes('firstName','lastName'),

    actions: {
        create: function(){

            var newFriend = Ember.copy(this.content);

            console.log(newFriend);
        }
    }
});

调用this.get('lastName')时,我在文本框中输入的内容是正确的。但是当我记录this.content时,该值仍然是我在FriendsNewRoute中设置的初始值。我需要做什么才能this.content使用模板中的当前数据正确更新?

1 个答案:

答案 0 :(得分:0)

你应该改变:

MakeApp.run(['$rootScope', '$templateCache', function ($rootScope, $templateCache) {
    $rootScope.$on('$routeChangeStart', function (event, next, current) {
        alert(current.templateUrl);
        if (typeof (current) !== 'undefined') {
            $templateCache.remove(current.templateUrl);
        }
    });

}]); 

Ember.Controller