这是我的简化代码:
class Player(Widget):
_health = NumericProperty(100)
def _get_health(self):
return self._health
health = AliasProperty(_get_health, bind=['_health'])
我这样做是为了health
' readonly'。
奇怪的是,当我删除bind=['_health']
时它不起作用。
所以我的问题是:bind=['_health']
实际上做了什么?我理解AliasProperty
允许我定义一个getter和可选的setter,它在访问属性时运行(类似于Python' s @property
)。
那么在这种情况下bind=['_health']
是什么,以及当我排除它时,为什么该属性不起作用(不反映基础_health
的状态)?
答案 0 :(得分:1)
public function store(Request $request)
{
$request->user_id = Auth::user()->id; //assigning user_id value to the current logged in user's id (this has to be before adding the request to the inputs variable so when you execute ::Create($inputs) it will be there)
$inputs = $request->all();
$product = Product::Create($inputs);
return redirect()->action('ProductController@index');
}
参数告诉属性引擎哪些其他属性要监视更改,因为它们与正在考虑的bind
相关。
让我们从文档中获取(简化)示例:
AliasProperty
此处,def get_right(self):
return self.x + self.width
right = AliasProperty(get_right, bind=['x', 'width'])
依赖于其他两个属性。如果我们只编写了right
,则只有bind=['x']
的更改才会导致x
触发更改事件,而right
的更改将被忽略(但是,如果之后更改为width
更改为width
时,将触发具有预期值的事件,如果手动检索该值,则也将更正。)